本章主要介绍 OceanBase 数据库 MySQL 模式的内建函数。
单行函数
单行函数主要指返回单行结果的函数,包括日期与时间函数、字符串函数、转换函数、数学函数、比较函数与流程控制函数。
日期与时间函数
| 函数名 |
功能描述 |
| ADDDATE |
将指定的天数添加到日期 |
| ADDTIME |
将指定的时间添加到时间 |
| CONVERT_TZ |
将时间从一个时区转换为另一个时区 |
| CURDATE |
返回当前日期 |
| CURRENT_DATE |
返回当前日期 |
| CURRENT_TIME |
返回当前时间 |
| CURRENT_TIMESTAMP |
返回当前日期和时间 |
| CURTIME |
返回当前时间 |
| DATE |
从日期时间表达式中提取日期部分 |
| DATE_ADD |
将指定的时间间隔添加到日期 |
| DATE_FORMAT |
按照指定格式格式化日期 |
| DATE_SUB |
从日期中减去指定的时间间隔 |
| DATEDIFF |
返回两个日期之间的天数差 |
| DAY |
从日期中提取天数 |
| DAYNAME |
返回日期的星期名称 |
| DAYOFMONTH |
返回日期中的天数 |
| DAYOFWEEK |
返回日期的星期几(1=星期日) |
| DAYOFYEAR |
返回日期在一年中的天数 |
| EXTRACT |
从日期时间中提取指定的部分 |
| FROM_DAYS |
将天数转换为日期 |
| FROM_UNIXTIME |
将 Unix 时间戳转换为日期时间 |
| GET_FORMAT |
返回指定格式的日期时间格式字符串 |
| HOUR |
从时间中提取小时 |
| LAST_DAY |
返回指定日期所在月份的最后一天 |
| LOCALTIME |
返回当前本地时间 |
| LOCALTIMESTAMP |
返回当前本地时间戳 |
| MAKEDATE |
根据年份和天数创建日期 |
| MAKETIME |
根据小时、分钟和秒创建时间 |
| MICROSECOND |
从时间中提取微秒 |
| MINUTE |
从时间中提取分钟 |
| MONTH |
从日期中提取月份 |
| MONTHNAME |
返回日期的月份名称 |
| NOW |
返回当前日期和时间 |
| PERIOD_ADD |
将指定的月数添加到期间 |
| PERIOD_DIFF |
返回两个期间之间的月数差 |
| QUARTER |
返回日期所在的季度 |
| SECOND |
从时间中提取秒 |
| SEC_TO_TIME |
将秒数转换为时间 |
| STR_TO_DATE |
将字符串转换为日期 |
| SUBDATE |
从日期中减去指定的时间间隔 |
| SUBTIME |
从时间中减去指定的时间 |
| SYSDATE |
返回当前系统日期和时间 |
| TIME |
从日期时间表达式中提取时间部分 |
| TIME_FORMAT |
按照指定格式格式化时间 |
| TIMEDIFF |
返回两个时间之间的差值 |
| TIMESTAMP |
将表达式转换为时间戳 |
| TIMESTAMPADD |
将指定的时间间隔添加到时间戳 |
| TIMESTAMPDIFF |
返回两个时间戳之间的差值 |
| TIME_TO_SEC |
将时间转换为秒数 |
| TIME_TO_USEC |
将时间转换为微秒数 |
| TO_DAYS |
将日期转换为天数 |
| TO_SECONDS |
将日期时间转换为秒数 |
| UNIX_TIMESTAMP |
将日期时间转换为 Unix 时间戳 |
| USEC_TO_TIME |
将微秒数转换为时间 |
| UTC_DATE |
返回当前 UTC 日期 |
| UTC_TIME |
返回当前 UTC 时间 |
| UTC_TIMESTAMP |
返回当前 UTC 时间戳 |
| WEEK |
返回日期所在的周数 |
| WEEKDAY |
返回日期的星期几(0=星期一) |
| WEEKOFYEAR |
返回日期在一年中的周数 |
| YEAR |
从日期中提取年份 |
| YEARWEEK |
返回日期的年份和周数 |
字符串函数
| 函数名 |
功能描述 |
| ASCII |
返回字符串第一个字符的 ASCII 值 |
| BIN |
将数值转换为二进制字符串 |
| BIT_LENGTH |
返回字符串的位长度 |
| CHAR |
将 ASCII 值转换为字符 |
| CHAR_LENGTH |
返回字符串的字符长度 |
| CHARACTER_LENGTH |
返回字符串的字符长度 |
| CONCAT |
连接多个字符串 |
| CONCAT_WS |
使用分隔符连接多个字符串 |
| ELT |
返回指定索引位置的字符串 |
| EXPORT_SET |
返回一个字符串,其中包含指定数量的位 |
| FIELD |
返回字符串在列表中的位置 |
| FIND_IN_SET |
在逗号分隔的字符串列表中查找字符串 |
| FORMAT |
将数值格式化为指定的小数位数 |
| FROM_BASE64 |
解码 Base64 字符串 |
| HEX |
将字符串转换为十六进制 |
| INSERT |
在字符串中插入子字符串 |
| INSTR |
返回子字符串在字符串中的位置 |
| INT2IP |
将整数转换为 IP 地址 |
| IP2INT |
将 IP 地址转换为整数 |
| KEYVALUE |
从键值对字符串中提取值 |
| LCASE |
将字符串转换为小写 |
| LEFT |
返回字符串左边的指定字符数 |
| LENGTH |
返回字符串的字节长度 |
| LOCATE |
返回子字符串在字符串中的位置 |
| LOWER |
将字符串转换为小写 |
| LPAD |
在字符串左边填充指定字符 |
| LTRIM |
删除字符串左边的空格 |
| MAKE_SET |
根据位值创建字符串集合 |
| MID |
从字符串中提取子字符串 |
| OCT |
将数值转换为八进制字符串 |
| OCTET_LENGTH |
返回字符串的字节长度 |
| ORD |
返回字符串第一个字符的字符集数值 |
| POSITION |
返回子字符串在字符串中的位置 |
| QUOTE |
将字符串用引号包围并转义特殊字符 |
| REGEXP |
测试字符串是否匹配正则表达式 |
| REGEXP_INSTR |
返回正则表达式匹配的位置 |
| REGEXP_LIKE |
测试字符串是否匹配正则表达式 |
| REGEXP_REPLACE |
使用正则表达式替换字符串 |
| REGEXP_SUBSTR |
使用正则表达式提取子字符串 |
| REPEAT |
重复字符串指定次数 |
| REPLACE |
替换字符串中的子字符串 |
| REVERSE |
反转字符串 |
| RIGHT |
返回字符串右边的指定字符数 |
| RLIKE |
测试字符串是否匹配正则表达式 |
| RPAD |
在字符串右边填充指定字符 |
| RTRIM |
删除字符串右边的空格 |
| SOUNDEX |
返回字符串的 SOUNDEX 值 |
| SPACE |
返回指定数量的空格字符串 |
| SPLIT_PART |
根据分隔符分割字符串并返回指定部分 |
| STRCMP |
比较两个字符串 |
| SUBSTR |
从字符串中提取子字符串 |
| SUBSTRING |
从字符串中提取子字符串 |
| SUBSTRING_INDEX |
根据分隔符提取子字符串 |
| TO_BASE64 |
将字符串编码为 Base64 |
| TRIM |
删除字符串两端的空格或指定字符 |
| UCASE |
将字符串转换为大写 |
| UNHEX |
将十六进制字符串转换为字符 |
| UPPER |
将字符串转换为大写 |
| URL_DECODE |
解码 URL 编码的字符串 |
| URL_ENCODE |
将字符串编码为 URL 格式 |
| WEIGHT_STRING |
返回字符串的权重字符串 |
转换函数
| 函数名 |
功能描述 |
| CAST |
将表达式转换为指定的数据类型 |
| CONVERT |
将表达式转换为指定的字符集 |
| DECODE_TRACE_ID |
解码跟踪 ID |
| SCN_TO_TIMESTAMP |
将 SCN 转换为时间戳 |
| TIMESTAMP_TO_SCN |
将时间戳转换为 SCN |
| TO_CHAR(character) |
将字符表达式转换为字符串 |
| TO_CHAR(datetime) |
将日期时间表达式转换为字符串 |
| TO_CHAR(number) |
将数值表达式转换为字符串 |
数学函数
| 函数名 |
功能描述 |
| ABS |
返回指定数值表达式的绝对值(正值)的数学函数 |
| ACOS |
返回以弧度表示的角,其余弦为指定的 NUMBER 表达式,也称为反余弦 |
| ASIN |
返回以弧度表示的角,其正弦为指定的 NUMBER 表达式,也称为反正弦 |
| ATAN |
返回以弧度表示的角,其正切为指定的 NUMBER 表达式,也称为反正切 |
| ATAN2 |
返回以弧度表示的角,其正切为指定的两个 NUMBER 表达式的比值 |
| BIT_COUNT |
返回指定数值的二进制表示中 1 的个数 |
| CEIL |
返回大于或等于指定数值的最小整数 |
| CEILING |
返回大于或等于指定数值的最小整数 |
| CONV |
将数值从一种进制转换为另一种进制 |
| COS |
返回指定角度的余弦值 |
| COT |
返回指定角度的余切值 |
| CRC32 |
计算循环冗余校验值 |
| DEGREES |
将弧度转换为角度 |
| EXP |
返回 e 的指定次幂 |
| FLOOR |
返回小于或等于指定数值的最大整数 |
| GENERATOR |
生成指定范围内的随机数 |
| LN |
返回指定数值的自然对数 |
| LOG |
返回指定数值的对数 |
| LOG10 |
返回指定数值的以 10 为底的对数 |
| LOG2 |
返回指定数值的以 2 为底的对数 |
| MOD |
返回两个数值相除的余数 |
| NEG |
返回指定数值的相反数 |
| NORMAL |
生成正态分布的随机数 |
| PI |
返回圆周率 π 的值 |
| POWER |
返回指定数值的指定次幂 |
| POW |
返回指定数值的指定次幂 |
| RADIANS |
将角度转换为弧度 |
| RAND |
生成 0 到 1 之间的随机数 |
| RANDOM |
生成 0 到 1 之间的随机数 |
| RANDSTR |
生成指定长度的随机字符串 |
| ROUND |
将数值四舍五入到指定的小数位数 |
| SIGN |
返回数值的符号(-1、0 或 1) |
| SIN |
返回指定角度的正弦值 |
| SQRT |
返回指定数值的平方根 |
| TAN |
返回指定角度的正切值 |
| TRUNCATE |
将数值截断到指定的小数位数 |
| UNIFORM |
生成指定范围内的均匀分布随机数 |
| ZIPF |
生成齐普夫分布的随机数 |
比较函数
| 函数名 |
功能描述 |
| GREATEST |
返回参数列表中的最大值 |
| INTERVAL |
返回小于第一个参数的最大参数索引 |
| ISNULL |
测试表达式是否为 NULL |
| LEAST |
返回参数列表中的最小值 |
流程控制函数
| 函数名 |
功能描述 |
| CASE |
条件表达式,根据条件返回不同的值 |
| IF |
条件函数,根据条件返回不同的值 |
| IFNULL |
如果第一个参数为 NULL,返回第二个参数 |
| NULLIF |
如果两个参数相等,返回 NULL |
| ORA_DECODE |
Oracle 兼容的 DECODE 函数 |
聚合函数
聚合函数对一组值执行计算并返回单一的值。聚合函数忽略空值。聚合函数经常与 SELECT 语句的 GROUP BY 子句一同使用。
所有聚合函数都具有确定性。任何时候用一组给定的输入值调用它们时,都返回相同的值。
在 OceanBase 数据库的聚合函数中,值表达式只能出现一个。例如:不支持 COUNT(c1, c2),仅支持COUNT(c1)。
| 函数名 |
功能描述 |
| APPROX_COUNT_DISTINCT |
返回近似不重复值的数量 |
| ARG_MAX |
返回最大值的参数 |
| ARG_MIN |
返回最小值的参数 |
| AVG |
返回数值的平均值 |
| BIT_AND |
对数值进行按位与运算 |
| BIT_OR |
对数值进行按位或运算 |
| BIT_XOR |
对数值进行按位异或运算 |
| COUNT |
返回行数或非 NULL 值的数量 |
| GROUP_CONCAT |
将多行值连接成一个字符串 |
| GROUPING |
返回 GROUP BY 子句的分组信息 |
| MAX |
返回最大值 |
| MIN |
返回最小值 |
| STD |
返回标准差 |
| STDDEV |
返回标准差 |
| STDDEV_POP |
返回总体标准差 |
| STDDEV_SAMP |
返回样本标准差 |
| SUM |
返回数值的总和 |
| VAR_POP |
返回总体方差 |
| VAR_SAMP |
返回样本方差 |
| VARIANCE |
返回方差 |
分析函数
分析函数(某些数据库下也叫做窗口函数)与聚合函数类似,计算总是基于一组行的集合,不同的是,聚合函数一组只能返回一行,而分析函数每组可以返回多行,组内每一行都是基于窗口的逻辑计算的结果。分析函数可以显著优化需要 Self-Join 的查询。
"窗口"也称为 Frame,OceanBase 数据库同时支持 ROWS 与 RANGE 两种 Frame 语义,前者是基于物理行偏移的窗口,后者则是基于逻辑值偏移的窗口。
| 函数名 |
功能描述 |
| APPROX_COUNT_DISTINCT |
返回近似不重复值的数量 |
| AVG |
返回数值的平均值 |
| BIT_AND |
对数值进行按位与运算 |
| BIT_OR |
对数值进行按位或运算 |
| BIT_XOR |
对数值进行按位异或运算 |
| COUNT |
返回行数或非 NULL 值的数量 |
| CUME_DIST |
返回累积分布值 |
| DENSE_RANK |
返回密集排名 |
| FIRST_VALUE |
返回窗口中的第一个值 |
| LAG |
返回前一行或前 N 行的值 |
| LAST_VALUE |
返回窗口中的最后一个值 |
| LEAD |
返回后一行或后 N 行的值 |
| MAX |
返回最大值 |
| MIN |
返回最小值 |
| NTH_VALUE |
返回窗口中的第 N 个值 |
| NTILE |
将结果集分成指定数量的组 |
| PERCENT_RANK |
返回百分比排名 |
| PERCENTILE_CONT |
返回连续百分位值 |
| RANK |
返回排名 |
| ROW_NUMBER |
返回行号 |
| STD |
返回标准差 |
| STDDEV |
返回标准差 |
| STDDEV_POP |
返回总体标准差 |
| STDDEV_SAMP |
返回样本标准差 |
| SUM |
返回数值的总和 |
| VAR_POP |
返回总体方差 |
| VAR_SAMP |
返回样本方差 |
| VARIANCE |
返回方差 |
加密函数
加密函数用于数据的加密和解密,主要包括加密、解密函数。
| 函数名 |
功能描述 |
| AES_DECRYPT |
使用 AES 算法解密数据 |
| AES_ENCRYPT |
使用 AES 算法加密数据 |
| COMPRESS |
压缩字符串 |
| DECODE |
解码字符串 |
| DES_DECRYPT |
使用 DES 算法解密数据 |
| DES_ENCRYPT |
使用 DES 算法加密数据 |
| ENCODE |
编码字符串 |
| ENCRYPT |
加密字符串 |
| ENHANCED_AES_DECRYPT |
使用增强 AES 算法解密数据 |
| ENHANCED_AES_ENCRYPT |
使用增强 AES 算法加密数据 |
| MD5 |
计算 MD5 哈希值 |
| PASSWORD |
计算密码哈希值 |
| RANDOM_BYTES |
生成随机字节 |
| SHA |
计算 SHA 哈希值 |
| SHA1 |
计算 SHA1 哈希值 |
| SHA2 |
计算 SHA2 哈希值 |
| SM3 |
计算 SM3 哈希值 |
| SM4_DECRYPT |
使用 SM4 算法解密数据 |
| SM4_ENCRYPT |
使用 SM4 算法加密数据 |
| UNCOMPRESS |
解压缩字符串 |
| UNCOMPRESSED_LENGTH |
返回解压缩后的长度 |
| VALIDATE_PASSWORD_STRENGTH |
验证密码强度 |
信息函数
信息函数用于返回指定的系统信息。
| 函数名 |
功能描述 |
| BENCHMARK |
执行表达式指定次数并返回执行时间 |
| CHARSET |
返回字符串的字符集 |
| COLLATION |
返回字符串的排序规则 |
| CONNECTION_ID |
返回当前连接的 ID |
| COERCIBILITY |
返回字符串的强制性值 |
| CURRENT_ROLE |
返回当前角色 |
| CURRENT_USER |
返回当前用户 |
| DATABASE |
返回当前数据库名称 |
| FOUND_ROWS |
返回上一个 SELECT 语句影响的行数 |
| ICU_VERSION |
返回 ICU 库的版本 |
| LAST_INSERT_ID |
返回最后一个插入的 ID |
| OB_TRANSACTION_ID |
返回当前事务 ID |
| OB_VERSION |
返回 OceanBase 数据库版本 |
| ROW_COUNT |
返回上一个语句影响的行数 |
| SCHEMA |
返回当前数据库名称 |
| SESSION_USER |
返回当前会话用户 |
| SYSTEM_USER |
返回系统用户 |
| USER |
返回当前用户 |
| VERSION |
返回数据库版本 |
JSON 函数
JSON 函数对 JSON 值进行创建、操作和搜索等操作。
| 函数名 |
功能描述 |
| JSON_ARRAY |
创建 JSON 数组 |
| JSON_ARRAY_APPEND |
向 JSON 数组追加值 |
| JSON_ARRAY_INSERT |
在 JSON 数组中插入值 |
| JSON_ARRAYAGG |
将多行聚合为 JSON 数组 |
| JSON_CONTAINS |
检查 JSON 文档是否包含指定值 |
| JSON_CONTAINS_PATH |
检查 JSON 文档是否包含指定路径 |
| JSON_DEPTH |
返回 JSON 文档的深度 |
| JSON_EXTRACT |
从 JSON 文档中提取值 |
| JSON_INSERT |
在 JSON 文档中插入值 |
| JSON_KEYS |
返回 JSON 对象的所有键 |
| JSON_LENGTH |
返回 JSON 数组或对象的长度 |
| JSON_MERGE |
合并 JSON 文档 |
| JSON_MERGE_PATCH |
使用 JSON Merge Patch 合并文档 |
| JSON_MERGE_PRESERVE |
保留重复键地合并 JSON 文档 |
| JSON_OBJECT |
创建 JSON 对象 |
| JSON_OBJECTAGG |
将多行聚合为 JSON 对象 |
| JSON_OVERLAPS |
检查两个 JSON 文档是否重叠 |
| JSON_PRETTY |
格式化 JSON 文档 |
| JSON_QUOTE |
将字符串转换为 JSON 字符串 |
| JSON_REMOVE |
从 JSON 文档中删除值 |
| JSON_REPLACE |
替换 JSON 文档中的值 |
| JSON_SCHEMA_VALID |
验证 JSON 文档是否符合模式 |
| JSON_SCHEMA_VALIDATION_REPORT |
返回 JSON 模式验证报告 |
| JSON_SEARCH |
在 JSON 文档中搜索值 |
| JSON_SET |
在 JSON 文档中设置值 |
| JSON_STORAGE_SIZE |
返回 JSON 文档的存储大小 |
| JSON_TABLE |
将 JSON 数据转换为表格式 |
| JSON_TYPE |
返回 JSON 值的类型 |
| JSON_UNQUOTE |
移除 JSON 字符串的引号 |
| JSON_VALID |
验证 JSON 文档是否有效 |
| JSON_VALUE |
从 JSON 文档中提取标量值 |
| MEMBER |
检查值是否为 JSON 数组的成员 |
XML 函数
XML 函数用于处理和分析 XML 数据。
| 函数名 |
功能描述 |
| EXTRACTVALUE |
从 XML 文档中提取值 |
| UPDATEXML |
更新 XML 文档中的值 |
空间函数
空间函数用于处理和分析空间数据,空间函数可以与地理空间数据配合使用。
| 函数名 |
功能描述 |
| _ST_GeoHash |
计算几何对象的 GeoHash 值 |
| 空间构造函数 |
创建空间几何对象 |
| 空间关系函数 |
测试空间对象之间的关系 |
| 几何处理函数 |
处理空间几何对象 |
| 几何格式转换函数 |
转换几何对象的格式 |
| 几何属性函数 |
获取几何对象的属性 |
| 空间格式转换函数 |
转换空间数据的格式 |
| 空间分析函数 |
分析空间数据 |
| 空间运算函数 |
对空间对象进行运算 |
| 空间访问器函数 |
访问空间对象的属性 |
| 创建几何值函数 |
创建几何值 |
锁函数
锁函数用于操作锁。
| 函数名 |
功能描述 |
| GET_LOCK |
获取命名锁 |
| IS_FREE_LOCK |
检查命名锁是否可用 |
| IS_USED_LOCK |
检查命名锁是否被使用 |
| RELEASE_ALL_LOCKS |
释放所有命名锁 |
| RELEASE_LOCK |
释放命名锁 |
位图函数
位图函数处理高效压缩位图数据的函数。
| 函数名 |
功能描述 |
| 位图构造函数 |
创建位图对象 |
| 位图操作函数 |
操作位图对象 |
| 位图运算函数 |
对位图进行运算 |
| 位图基数计算函数 |
计算位图的基数 |
| 位图判断函数 |
判断位图属性 |
| 位图输出函数 |
输出位图数据 |
| 位图聚合函数 |
聚合位图数据 |
数组函数
数组函数用于处理和分析数组数据。
| 函数名 |
功能描述 |
| 数组构造函数 |
创建数组对象 |
| 数组操作函数 |
操作数组对象 |
| 数组输出函数 |
输出数组数据 |
| 数组判断函数 |
判断数组属性 |
映射函数
| 函数名 |
功能描述 |
| 映射构造函数 |
创建映射对象 |
| 映射操作函数 |
操作映射对象 |
| 映射判断函数 |
判断映射属性 |
审计函数
| 函数名 |
功能描述 |
| AUDIT_LOG_FILTER_REMOVE_FILTER |
移除审计日志过滤器 |
| AUDIT_LOG_FILTER_REMOVE_USER |
移除审计日志用户过滤器 |
| AUDIT_LOG_FILTER_SET_FILTER |
设置审计日志过滤器 |
| AUDIT_LOG_FILTER_SET_USER |
设置审计日志用户过滤器 |
性能模式函数
| 函数名 |
功能描述 |
| FORMAT_BYTES |
格式化字节数 |
| FORMAT_PICO_TIME |
格式化皮秒时间 |
文本处理函数
| 函数名 |
功能描述 |
| TOKENIZE |
对文本进行分词处理 |
其他函数
其他函数主要包括一些不易分类的函数。
| 函数名 |
功能描述 |
| ANY_VALUE |
返回任意非 NULL 值 |
| BIN_TO_UUID |
将二进制转换为 UUID |
| COALESCE |
返回第一个非 NULL 值 |
| DEFAULT |
返回列的默认值 |
| INET6_ATON |
将 IPv6 地址转换为二进制 |
| INET6_NTOA |
将二进制转换为 IPv6 地址 |
| INET_ATON |
将 IPv4 地址转换为整数 |
| INET_NTOA |
将整数转换为 IPv4 地址 |
| IS_IPV4 |
检查字符串是否为有效的 IPv4 地址 |
| IS_IPV4_COMPAT |
检查 IPv6 地址是否为 IPv4 兼容 |
| IS_IPV6 |
检查字符串是否为有效的 IPv6 地址 |
| IS_UUID |
检查字符串是否为有效的 UUID |
| MATCH |
全文搜索匹配函数 |
| NAME_CONST |
创建命名常量 |
| NVL |
如果第一个参数为 NULL,返回第二个参数 |
| SLEEP |
暂停执行指定的秒数 |
| UUID |
生成 UUID |
| UUID_SHORT |
生成短 UUID |
| UUID_TO_BIN |
将 UUID 转换为二进制 |
| VALUES |
返回 INSERT 语句中的值 |