没有任何参数的函数类似于 。但是,伪列通常为结果集中的每一行返回不同的值,而没有任何变量的函数通常为每一行返回相同的值。

OceanBase 内嵌的函数可以直接在 SQL 语句中使用。每个函数的入参传入值均有期望的数据类型,如果传入的数据类型不是期望的数据类型,则 OceanBase 会在实际执行 SQL 函数之前尝试将参数传入的数值转换为期望的数据类型。

对于绝大多数的函数当入参为空值 NULL 的时候,其返回的结果也为 NULL。这种情况下,您可以使用 函数返回一个非空值。例如,一张记录佣金的表的佣金列 commission_pct 为空值 NULL ,则表达式NVL(commission_pct,0) 返回 0;如果 commission_pct 的值不为 NULL,则返回实际的佣金值。

在如下的函数分类列表中,每一类函数的参数和最终的函数返回值都有其特定的数据类型。

本章中函数分成了两大类:

  • 统计函数:包括聚合函数和分析函数。

单行函数对于被查询的表或者视图每一行均返回一个结果值,这些函数可以使用在 SQL 语句的 SELECTWHERESTART WITHCONNECT BYHAVING 等子句当中。

使用分析函数时需要用特殊的关键字 OVER 来指定窗口。更多关于窗后函数的信息,请参阅文档窗口函数说明

数字函数的变量输入与函数输出结果均为数字类型,绝大部分的数字函数的返回值的数据类型为 NUMBER,可以精确到小数点后 38 位。一些高等代数相关函数 COSCOSHEXPLNLOGSINSINHSQRTTANTANH 等函数的结果精确到小数点后 36 位,其他代数相关函数 ACOSASINATANATAN2

其结果返回值精确到小数点后 30 位。

返回字符串的字符串函数

函数的返回值的最大长度受数据类型的影响,比如:函数的返回值的数据类型是 VARCHAR2,但是返回值实际的大小超过了 VARCHAR2 数据类型的最大限制,此时 OceanBase 数据库会对结果进行截断处理并返回,但是在客户端上并不会显示提示。

函数分类函数子分类函数名功能描述
单行函数返回字符串的字符串函数n 转换为等价的一个或多个字符返回,且返回值与当前系统的字符集相关。
单行函数返回字符串的字符串函数CONCAT连接两个字符串。
单行函数返回字符串的字符串函数返回字符串并将字符串中每个单词的首字母大写,其他字母小写。
单行函数返回字符串的字符串函数LOWER将字符串全部转为小写。
单行函数返回字符串的字符串函数在字符串 c1 的左边用字符串 c2 填充,直到长度为 n 时为止。
单行函数返回字符串的字符串函数LTRIM删除左边出现的字符串。
单行函数返回字符串的字符串函数用于正则表达式替换。
单行函数返回字符串的字符串函数REGEXP_SUBSTROceanBase 暂不支持。
单行函数返回字符串的字符串函数REPLACE将字符表达式值中,部分相同字符串,替换成新的字符串。
单行函数返回字符串的字符串函数在字符串 c1 的右边用字符串 c2 填充,直到长度为 n 时为止。
单行函数返回字符串的字符串函数RTRIM删除右边出现的字符串,此函数对于格式化查询的输出非常有用。
单行函数返回字符串的字符串函数截取子字符串。其中多字节符(汉字、全角符等)按 1 个字符计算。
单行函数返回字符串的字符串函数TRANSLATE将字符表达式值中,指定字符替换为新字符。多字节符(汉字、全角符等),按 1 个字符计算。
单行函数返回字符串的字符串函数删除一个字符串的开头或结尾(或两者)的字符。
单行函数返回字符串的字符串函数UPPER将字符串全部转为大写。

返回数字的字符串函数

函数分类函数子分类函数名功能描述
单行函数返回数字的字符串函数返回字符表达式最左端字符的 ASCII 码值。
单行函数返回数字的字符串函数INSTR在一个字符串中搜索指定的字符,返回发现指定的字符的位置。
单行函数返回数字的字符串函数返回字符串的长度。
单行函数返回数字的字符串函数REGEXP_COUNTOceanBase 暂不支持。
单行函数返回数字的字符串函数REGEXP_INSTROceanBase 暂不支持。

时间日期函数支持的入参数据类型有三类:日期时间 (DATE),时间戳 (TIMESTAMPTIMESTAMP WITH TIME ZONETIMESTAMP WITH LOCAL TIME ZONE),以及间隔 (INTERVAL DAY TO SECONDINTERVAL YEAR TO MONTH)

仅支持 数据类型入参的函数列表:ADD_MONTHSCURRENT_DATE, LAST_DAYNEW_TIMENEXT_DAY

剩余的函数对于三种参数数据类型均可以支持,且返回和入参同样的数据类型。

通用比较函数

可以通过本类别函数快速的在集合中寻找到最大值和最小值。

函数分类函数子分类函数名功能描述
单行函数通用比较函数GREATEST返回一个或多个表达式列表中的最大值。
单行函数通用比较函数返回一个或多个表达式列表中的最小值。

转换函数

可以通过本类型的函数将原本的数据类型转换为另外一种数据类型。

函数分类函数子分类函数名功能描述
单行函数转换函数ASCIISTROceanBase 暂不支持。
单行函数转换函数BIN_TO_NUMOceanBase 暂不支持。
单行函数转换函数CAST用于将源数据类型的表达式显式转换为另一种数据类型。
单行函数转换函数CHARTOROWIDOceanBase 暂不支持。
单行函数转换函数CHARVARCHAR2NVARCHAR2 数据类型中包含十六进制数字的字符转换为 RAW 数据类型。
单行函数转换函数RAWTOHEX将二进制数转换为一个相应的十六进制表示的字符串。
单行函数转换函数返回一个双精度的 64 位浮点数.
单行函数转换函数TO_BINARY_FLOAT返回一个单精度的 32 位浮点数。
单行函数转换函数NCHARNVARCHAR2CLOB 数据转换为数据库字符集。
单行函数转换函数TO_CHAR (datetime)DATETIMESTAMPTIMESTAMP WITH TIME ZONETIMESTAMP WITH LOCAL TIME ZONEINTERVAL DAY TO SECONDINTERVAL YEAR TO MONTH 等数据类型的值按照参数 fmt 指定的格式转换为 VARCHAR2 数据类型的值。
单行函数转换函数NUMBERBINARY_FLOATBINARY_DOUBLE 类型的数值 n 按照指定数值格式 fmt 转换为 varchar2 数据类型的值。
单行函数转换函数TO_DATECHARVARCHARNCHARNVARCHAR2 数据类型的字符转换为日期数据类型的值。
单行函数转换函数将一个 CHARVARCHAR2NCHARNVARCHAR2 数据类型的字符串转换为一个 INTERVAL DAY TO SECOND 数据类型的值,该函数可以用来对一个日期时间值进行加减计算。
单行函数转换函数TO_NUMBERexpr 转换为数值数据类型的值。
单行函数转换函数将字符串转换为 TIMESTAMP 数据类型。
单行函数转换函数TO_TIMESTAMP_TZ将字符串转换为 TIMESTAMP WITH TIME ZONE 数据类型,包含时区信息。
单行函数转换函数将一个 CHARVARCHAR2NCHARNVARCHAR2 数据类型的字符串转换为一个 INTERVAL YEAR TO MONTH 数据类型的值,该函数可以用来对一个日期时间值进行加减计算。

可以通过本类型的函数在 OceanBase 数据库中实现数据的编码解密需求。

空值相关函数

函数分类函数子分类函数名功能描述
单行函数空值相关函数COALESCE返回参数列表中第一个非空表达式,必须指定最少两个参数。
单行函数空值相关函数判断条件中的一个或者两个操作数是否为 NULL
单行函数空值相关函数NULLIFOceanBase 暂不支持。
单行函数空值相关函数NVL从两个表达式返回一个非 NULL 值。如果 expr1expr2 的结果皆为 NULL 值,则 NVL 函数返回 NULL。
单行函数空值相关函数根据表达式是否为空,返回不同的值。如果 expr1 不为空,则返回 expr2 的值,如果 expr1 为空,则返回 expr3 的值。expr2expr3 类型不同的话,expr3 会转换为 expr1 的类型。

环境相关函数

本分类的函数主要提供会话或者租户实例相关的环境信息。

函数分类函数子分类函数名功能描述
单行函数环境相关函数SYS_CONTEXTOceanBase 暂不支持。
单行函数环境相关函数UIDOceanBase 暂不支持。
单行函数环境相关函数USEROceanBase 暂不支持。

分析函数

函数分类函数子分类函数名功能描述
统计函数分析函数AVG返回数值列的平均值。
统计函数分析函数用于查询参数 expr 的行数。
统计函数分析函数CUME_DIST计算一个值在一组值中的累积分布。
统计函数分析函数计算有序行组中行的秩,并将秩作为 NUMBER 返回。
统计函数分析函数MAX返回参数中指定的列中的最大值。
统计函数分析函数返回参数中指定列的最小值。
统计函数分析函数SUM返回参数中指定列的和。
统计函数分析函数返回有序值中的第一个值。
统计函数分析函数LAG提供对多行表的访问,而不需要自连接。
统计函数分析函数返回一组有序值中的最后一个值。
统计函数分析函数LEAD它提供了对表多行的访问,而无需进行自我连接。给定从查询返回的一些列行和光标的位置,LEAD 提供超出该位置的物理偏移量的行的访问。
统计函数分析函数用于列转行。
统计函数分析函数NTH_VALUE返回 analytic_clause 定义的窗口中第 n 行的 measure_expr 值。
统计函数分析函数将有序数据集划分为 expr 指示的若干桶,并为每一行分配适当的桶号。
统计函数分析函数PERCENT_RANK类似于 CUME_DIST(累积分布)函数。 它的返回值范围为 0~1。任何集合中的第一行的 PERCENT_RANK 函数为 0,返回值为 NUMBER。
统计函数分析函数返回参数中指定列的和。
统计函数分析函数RANK基于 OVER 子句中的 表达式确定一组值的排名。
统计函数分析函数计算一个值与一组值之和的比率。
统计函数分析函数ROW_NUMBER为应用它的每一行分配一个唯一的数字。
统计函数分析函数用于计算总体标准差。
统计函数分析函数STDDEV_POP计算总体标准差。
统计函数分析函数计算样本标准差。
统计函数分析函数VARIANCE返回参数指定列的方差。