函数
聚合函数
avg(column_name)
:返回指定列中所有值的平均值count(*)
:返回结果集中的行数max(column_name)
:返回指定列中的最大值min(column_name)
:返回指定列中的最小值sum(column_name)
:返回指定列中所有值的总和string_agg(strings, sep)
:返回由分隔符分隔的字符串表达式的连接结果- 用户自定义函数 :Sql Engine 允许用户定义函数来执行自定义聚合,即与 SQL 的 group by 操作符一起使用的函数。
管理函数
backup(<dbsFile>, <logFile>, <nThreads>)
:使用 nThreads 个线程将 .dbs 和 .log 文件分别复制到 dbsFile 和 logFile 中。仅支持基于磁盘的数据库。config(name, value)
:设置新的配置参数值并返回旧值。如果值为 null,则参数不会更改,仅返回当前值。当前支持以下参数:batch.buf.size [integer] - 批量插入缓冲区大小(元素数)
bulk.page.write [boolean] - 批量写入所有脏页,而非逐个写入(仅限磁盘数据库)
mursiw.commit.optimization [布尔值] - 尽早释放事务锁(仅限磁盘数据库)
index.optimistic.lock.threshold [integer] - B 树索引乐观锁定的最大并发写事务数
allocation.bitmap.caching.priority [integer] - 分配位图页面的磁盘缓存优先级
index.caching.priority [integer] - 索引页面的磁盘缓存优先级
object.caching.priority [integer] - 对象页面的磁盘缓存优先级
save_dictionary(<filename>)
:将数据库元数据以 xSQL 配置格式(JSON)保存到 <filename>save_metadata(<filename>)
:将数据库元数据以 xSQL 配置格式(JSON)保存到 <filename>save_snapshot(<filename>)
:将数据库镜像(调用 C API mco_db_save())保存到指定的 <filename>set_free_memory_threshold(<size>)
:设置数据库空闲内存的限制。如果达到限制,当前事务将被中止(回滚)。xSQL 默认将阈值设置为 4Mb。此函数仅对当前连接更改限制。tl_save(<snapshotName>)
:将数据库快照保存到 <快照名称> 并截断日志。此函数仅适用于由 xSQL 创建且启用了事务日志支持的数据库。返回错误代码(0 表示成功)tl_start(<snapshotName>)
:启动事务日志(TL)。此函数仅适用于由 xSQL 创建且启用了事务日志支持的数据库。<快照名称> 是保存初始数据库快照的filename。返回错误代码(0 表示成功)tl_stop()
:停止事务日志(TL)。此函数仅适用于由 xSQL 创建且启用了事务日志支持的数据库。返回错误代码(0 表示成功)
数据库统计函数
get_data_file_size
:从 C API mco_disk_info() 的结果中获取字段 data_file_sizeget_free_memory
:将 C API mco_db_free_pages() 的结果转换为字节get_log_file_size
:从 C API mco_disk_info() 的结果中获取字段 log_file_sizeget_total_memory
:将 C API mco_db_total_pages() 的结果转换为字节get_used_database_size
:从 C API mco_disk_info() 的结果中获取字段 used_database_size
日期时间函数
day(<epoch_time>)
:返回自 1970 年 1 月 1 日以来经过的秒数所表示时间的天数部分dmy(<日>, <月>, <年>)
:返回日期 YYYYMMDD 的整数表示形式(<年>*10000 + <月>*100 + <日>)date2str(<整数日期>)
:将整数日期表示形式 YYYYMMDD 转换为字符串 'DD.MM.YYYY'get_day(<整数日期>)
:从整数日期表示形式(YYYYMMDD)中返回天数部分get_month(<整数日期>)
: 从整数日期表示形式(YYYYMMDD)中返回月份部分get_year(<整数日期>)
:从整数日期表示形式(YYYYMMDD)中返回年份部分hour(<epoch_time>)
: 返回自 1970 年 1 月 1 日以来经过的秒数所表示时间的小时部分(0 - 23)month(<epoch_time>)
:返回自 1970 年 1 月 1 日以来经过的秒数所表示时间的月份部分now
: 返回当前epoch_time(自 1970 年 1 月 1 日以来经过的秒数)second(<epoch_time>)
:返回自 1970 年 1 月 1 日以来经过的秒数所表示时间的秒数部分(0 - 59)str2date(<str_date>)
。将日期的字符串表示形式('dd.mm.yyyy'、'mm/dd/yyyy' 或 'dd-MON-yyyy')转换为整数表示形式 YYYYMMDD(年10000 + 月100 + 日)sysdate()
:返回当前的 EPOCH 时间(自 1970 年 1 月 1 日以来经过的秒数)week_day(<epoch_time>)
:返回以自 1970 年 1 月 1 日以来经过的秒数表示的时间的星期几(星期日为 0,星期六为 6)部分year(<epoch_time>)
:返回以自 1970 年 1 月 1 日以来经过的秒数表示的时间的年份部分setDateTimePrecision()
:使用 SmartESQL 更改日期时间操作的精度
数学函数
abs(a)
:返回指定表达式的绝对值(整型或实型)acos(r)
: 返回指定表达式的反余弦值(实型)asin(r)
: 返回指定表达式的反正弦值(实型)atan(r)
: 返回指定表达式的反正切值(实型)ceil(r)
: 返回向上取整后的值cos(r)
: 返回指定表达式的余弦值(实型)exp(r)
: 返回指数函数,即 e 的 r 次幂floor(r)
: 返回向下取整后的值integer(r)
: 返回指定表达式的整数值(实型)log(r)
: 返回指定表达式的以 10 为底的对数值(实型)mod(r,v)
: 返回指定表达式的模(r 除以 v 的余数)real(i)
: 返回指定表达式的实数值(整型)rnd()
: 返回一个介于 0.0 和 1.0 之间的随机双精度值round(r,p)
: 将实型表达式 r 四舍五入到指定精度 p 的小数位数sin(r)
: 返回指定表达式的正弦值(实型)sqrt(r)
: 返回 r 的平方根tan(r) 返回指定表达式(类型为实数)的正切值xor(r1, r2)
: 返回实数表达式 r1 和 r2 的异或值
分析函数
SmartESQL 提供了一个可在序列上运行的分析 SQL 函数库。SQL 分析示例页面中的示例演示了其中的若干函数。这些示例使用示例数据部分中描述的数据来展示不同类别的函数。
函数按类别表中的链接会使用下面描述的两个测试表之一来解释和演示这些函数。
字符函数
integer(s)
:返回字符串表达式 s 转换为整数后的值length(s)
:返回字符串表达式 s 的长度lower(s)
:返回字符串表达式 s 转换为小写后的结果real(s)
:返回字符串表达式 s 转换为实数后的值string(r)
:返回实数 r 的字符串形式sleft(s, n)
:返回字符串表达式 s 的左部分,指定字符数为 nsright(s, n)
:返回字符串表达式 s 的右部分,指定字符数为 nsubstr(s, m[, n])
:返回 s 的子字符串,从第 m 个字符(基于 1)开始,长度为 n 个字符(如果省略 n,则到字符串末尾)trim(s)
:去除字符串表达式 s 的前导和尾随空格upper(s)
:返回字符串表达式 s 转换为大写后的结果
窗口函数
“窗口函数”是聚合函数的一种变体。聚合函数(如 SUM() 和 AVG())接受 n 个输入并返回单个值,而窗口函数则返回 n 个值。
其他函数
choice(condition, then_value, else_value)
: 根据第一个参数的布尔值返回第二个或第三个参数并转换为字符串env(var)
:返回指定操作系统环境变量变量的值coalesce(x1,x2..)
:返回参数列表中第一个非空值generate_series(start, stop)
:返回从起始值到结束值的连续数字format(fmt, val)
:根据格式字符串格式指定的格式格式化值值。如果值值是 datetime 类型,则格式字符串必须适合 strftime()。对于数字和字符串值,格式字符串必须适合 printf()。其他类型的值将被转换为字符串get_last_autoid()
:返回此连接创建的最后一个对象的自增 IDifnull(x,y)
:如果第一个参数为空,则返回第一个参数,否则返回第二个参数nullifzero(x)
:如果第一个参数为零,则返回空值,否则返回第一个参数hashcode(val)
: 返回值值的哈希码length(a)
: 返回数组中的元素数量- signature(str):返回字符串的签名(使用的字符集)作为 64 位掩码
- psignature(str):返回字符串的签名(使用的字符集)作为 64 位掩码,跳过模式特殊符号
“_”
、“%”
和“<x>”
usignature(ustr)
:返回 Unicode 字符串的签名(使用的字符集)作为 64 位掩码upsignature(ustr)
:返回 Unicode 字符串的签名(使用的字符集)作为 64 位掩码,跳过模式特殊符号“_”
、“%”
和“<x>”
file_backup()
:为持久数据库执行文件备份fs_cache_warmup()
:将数据库文件加载到文件系统缓存中disk_cache_usage()
:估算缓存空间的使用量seq_skip_nan()
:在 SQL 序列操作中用于跳过 NaN(非数字)值的序列函数set_free_memroy_threshold()
:设置阈值,当可用内存低于该阈值时终止当前事务start_profile(rate_usec)
:以指定的速率(微秒)开始连接锁性能分析stop_profile()
:停止连接锁性能分析并输出连接状态