---
title: "函数概述 | OceanBase 文档中心"
description: 函数概述 OceanBase 内嵌的函数可以直接在 SQL 语句中使用。每个函数的入参传入值均有期望的数据类型，如果传入的数据类型不是期望的数据类型，则 OceanBase 数据库会在实际执行 SQL 函数之前尝试将参数传入的数值转换为期望的数据类型。 函数与运算符相似，即给定一些数据元素作为参数的输入并返回结果。然…
image: https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*OSPzQ6GUQF4AAAAAQHAAAAgAeiGDAQ/original
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 3.2.4 企业版 LTS

# 函数概述

更新时间：2026-06-25 17:27:27

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

函数与运算符相似，即给定一些数据元素作为参数的输入并返回结果。然而函数在入参形式上与运算符有比较大的区别。函数允许包含的参数数量不定，一个函数里可以有一到两个，甚至更多的参数。

```sql
函数名（参数，参数，...）

```

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

## 函数中的空值

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

## 函数分类与列表

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

> **注意**
>
>  
>
> 在 SQL 语句中对 `LOB` 列使用函数时，OceanBase 数据库将在 SQL 和 PL/SQL 处理期间创建临时 `LOB` 列，并有一定的使用限制，详情信息请参见 [与 Oracle 兼容性对比](https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000944050)。

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

- **单行函数** ：包括数字函数、返回字符串的字符串函数、返回数字的字符串函数、时间日期函数、通用比较函数、转换函数、编码解码函数、空值相关函数、环境和标识函数以及层次函数。
 - **统计函数** ：包括聚合函数和分析函数。

单行函数对于被查询的表或者视图每一行均返回一个结果值，这些函数可以使用在 SQL 语句的 `SELECT`、`WHERE`、`START WITH`、`CONNECT BY`、`HAVING` 等子句当中。

分析函数与聚合函数，都是对行集组（一组行的集合）进行聚合计算。不同的是，聚合函数每组只能返回一个值（一行），而分析函数每组可以返回多个值（多行）。行集组又称为窗口（Window）。聚合函数通常和 `SELECT` 语句中的 `GROUP BY` 子句一起使用，使用时数据库将查询表或视图的行分为几组，并将聚合函数应用于每组行，同时为每组返回一个结果行。

使用分析函数时需要用特殊的关键字 `OVER` 来指定窗口。更多关于窗后函数的信息，请参见 [分析函数说明](https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000945736)。

## 数字函数

数字函数的变量输入与函数输出结果均为数字类型，绝大部分的数字函数的返回值的数据类型为 `NUMBER`，可以精确到小数点后 38 位。一些高等代数相关函数 `COS()`、`COSH()`、`EXP()`、`LN()`、`LOG()`、`SIN()`、`SINH()`、`SQRT()`、`TAN()`、`TANH()` 等函数的结果精确到小数点后 36 位，其他代数相关函数 `ACOS()`，`ASIN()`，`ATAN()` 和 `ATAN2()`。其结果返回值精确到小数点后 30 位。

| 函数分类 | 函数子分类 | 函数名 | 功能描述 |
| --- | --- | --- | --- |
| 单行函数 | 数字函数 | ABS | 返回指定数值表达式的绝对值（正值）的数学函数。 |
| 单行函数 | 数字函数 | ACOS | 返回以弧度表示的角，其余弦为指定 `NUMBER`表达式，也称为反余弦。 |
| 单行函数 | 数字函数 | ASIN | 求反正弦值。 |
| 单行函数 | 数字函数 | ATAN | 用于求反正切值。 |
| 单行函数 | 数字函数 | ATAN2 | 返回 `y` 和 `x` 的反正切值，即返回的是原点至点 (x,y) 与 x 轴的夹角。 |
| 单行函数 | 数字函数 | BITAND | 运算符按位进行"与"操作。输入和输出类型均为 `INT` 整型，且类型一致。 |
| 单行函数 | 数字函数 | CEIL | 返回值大于等于数值 `numeric_expression` 的最小整数。 |
| 单行函数 | 数字函数 | COS | 用于计算参数角度的余弦值。 |
| 单行函数 | 数字函数 | COSH | 返回数字参数的双曲余弦值。 |
| 单行函数 | 数字函数 | EXP | 返回 e 的 numeric_expression 次幂。 |
| 单行函数 | 数字函数 | FLOOR | 返回小于等于数值 `numeric_expression` 的最大整数。 |
| 单行函数 | 数字函数 | LN | 返回以 e 为底的 `numeric_expression` 的对数。 |
| 单行函数 | 数字函数 | LOG | 返回以 `x` 为底的 `y` 的对数。 |
| 单行函数 | 数字函数 | MOD | 返回 `x` 除以 `y` 的余数。 |
| 单行函数 | 数字函数 | NANVL | 用于判断输入值参数 `n1` 是不是 `NaN`（表示非数字），并返回结果。 |
| 单行函数 | 数字函数 | POWER | 返回 `x` 的 `y` 次幂。 |
| 单行函数 | 数字函数 | REMAINDER | 返回 `x` 除以 `y` 的余数。 |
| 单行函数 | 数字函数 | ROUND | 返回 `numberic` 四舍五入后的值。 |
| 单行函数 | 数字函数 | SIGN | 返回数字 `n` 的符号，大于 0 返回 1，小于 0 返回 -1 ，等于 0 返回 0。 |
| 单行函数 | 数字函数 | SIN | 返回参数角度的正弦值。 |
| 单行函数 | 数字函数 | SINH | 返回数字参数的双曲正弦值。 |
| 单行函数 | 数字函数 | SQRT | 返回 `n` 的平方根。 |
| 单行函数 | 数字函数 | TAN | 返回角度的正切值。 |
| 单行函数 | 数字函数 | TANH | 返回数值参数的双曲正切值。 |
| 单行函数 | 数字函数 | TRUNC | 返回 `numeric` 按精度 `precision` 截取后的值。 |
| 单行函数 | 数字函数 | WIDTH_BUCKET | 根据输入参数创建等长的段，并返回 `expr` 所在的段号。即构建等宽直方图，其中直方图范围被划分为具有相同大小的区间。 |

## 返回字符串的字符串函数

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

如果返回值的数据类型是 `CLOB`，当返回值长度超过了最大限制时，OceanBase 数据库不会返回数据且显示错误提示。

| **函数分类** | **函数子分类** | **函数名** | **功能描述** |
| --- | --- | --- | --- |
| 单行函数 | 返回字符串的字符串函数 | CHR | 将 `n` 转换为等价的一个或多个字符返回，且返回值与当前系统的字符集相关。 |
| 单行函数 | 返回字符串的字符串函数 | CONCAT | 连接两个字符串。 |
| 单行函数 | 返回字符串的字符串函数 | INITCAP | 返回字符串并将字符串中每个单词的首字母大写，其他字母小写。 |
| 单行函数 | 返回字符串的字符串函数 | LOWER | 将字符串全部转为小写。 |
| 单行函数 | 返回字符串的字符串函数 | LPAD | 在字符串 `c1` 的左边用字符串 `c2` 填充，直到长度为 `n` 时为止。 |
| 单行函数 | 返回字符串的字符串函数 | LTRIM | 删除左边出现的字符串。 |
| 单行函数 | 返回字符串的字符串函数 | REGEXP_REPLACE | 用于正则表达式替换。 |
| 单行函数 | 返回字符串的字符串函数 | REGEXP_SUBSTR | 使用正则表达式搜索字符串并返回匹配字符串，扩展了 `SUBSTR` 函数的功能。 |
| 单行函数 | 返回字符串的字符串函数 | REPLACE | 将字符表达式值中，部分相同字符串，替换成新的字符串。 |
| 单行函数 | 返回字符串的字符串函数 | RPAD | 在字符串 `c1` 的右边用字符串 `c2` 填充，直到长度为 `n` 时为止。 |
| 单行函数 | 返回字符串的字符串函数 | RTRIM | 删除右边出现的字符串，此函数对于格式化查询的输出非常有用。 |
| 单行函数 | 返回字符串的字符串函数 | SUBSTR | 截取子字符串。其中多字节符（汉字、全角符等）按 1 个字符计算。 |
| 单行函数 | 返回字符串的字符串函数 | TRANSLATE | 将字符表达式值中，指定字符替换为新字符。多字节符（汉字、全角符等），按 1 个字符计算。 |
| 单行函数 | 返回字符串的字符串函数 | TRANSLATE ... USING | 将字符转换为指定用于数据库字符集和国家字符集之间转换的字符集。 |
| 单行函数 | 返回字符串的字符串函数 | TRIM | 删除一个字符串的开头或结尾（或两者）的字符。 |
| 单行函数 | 返回字符串的字符串函数 | UPPER | 将字符串全部转为大写。 |

## 返回数字的字符串函数

| **函数分类** | **函数子分类** | **函数名** | **功能描述** |
| --- | --- | --- | --- |
| 单行函数 | 返回数字的字符串函数 | ASCII | 返回字符表达式最左端字符的 ASCII 码值。 |
| 单行函数 | 返回数字的字符串函数 | INSTR | 在一个字符串中搜索指定的字符，返回发现指定的字符的位置。 |
| 单行函数 | 返回数字的字符串函数 | LENGTH | 返回字符串的长度。 |
| 单行函数 | 返回数字的字符串函数 | REGEXP_COUNT | 返回正则匹配的值在源字符串中出现的次数。 |
| 单行函数 | 返回数字的字符串函数 | REGEXP_INSTR | 返回正则表达式匹配值在源字符串中的位置。 |

## 时间日期函数

时间日期函数支持的入参数据类型有三类，包括日期时间 (`DATE`)、时间戳 (`TIMESTAMP`、`TIMESTAMP WITH TIME ZONE`、`TIMESTAMP WITH LOCAL TIME ZONE`)，以及间隔 (`INTERVAL DAY TO SECOND`、`INTERVAL YEAR TO MONTH`)。

仅支持 `DATE` 数据类型入参的函数列表：`ADD_MONTHS`、`CURRENT_DATE、`LAST_DAY`和`NEXT_DAY`。

如果对于以上函数，您尝试给入的是 `TIMESTAMP` 类型的数据，OceanBase 数据库内部会先进行隐式数据类型转换后带入函数进行运算，并返回 `DATE` 类型的返回值。

在使用时间日期函数前，建议执行 `SELECT * FROM NLS_DATABASE_PARAMETERS` 查看当前的 NLS 格式，如下所示：

```sql
obclient> SELECT * FROM NLS_DATABASE_PARAMETERS;
+-------------------------+------------------------------+
| PARAMETER               | VALUE                        |
+-------------------------+------------------------------+
| NLS_DATE_FORMAT         | DD-MON-RR                    |
| NLS_TIMESTAMP_FORMAT    | YYYY-MM-DD HH24:MI:SS        |
| NLS_TIMESTAMP_TZ_FORMAT | DD-MON-RR HH.MI.SSXFF AM TZR |
| NLS_TERRITORY           | AMERICA                      |
| NLS_SORT                | BINARY                       |
| NLS_COMP                | BINARY                       |
| NLS_CHARACTERSET        | AL32UTF8                     |
| NLS_NCHAR_CHARACTERSET  | AL16UTF16                    |
| NLS_DATE_LANGUAGE       | AMERICAN                     |
| NLS_LENGTH_SEMANTICS    | BYTE                         |
| NLS_NCHAR_CONV_EXCP     | FALSE                        |
| NLS_CALENDAR            | GREGORIAN                    |
| NLS_NUMERIC_CHARACTERS  | .,                           |
+-------------------------+------------------------------+
13 rows in set

```

如果与文中示例的显示格式不一致，可以执行如下命令更改格式：

```sql
obclient>ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';
Query OK, 0 rows affected

obclient>ALTER SESSION SET NLS_TIMESTAMP_FORMAT = 'YYYY-MM-DD HH24:MI:SS.FF';
Query OK, 0 rows affected
/*将返回值中秒的小数位设置为 9 位*/

obclient> ALTER SESSION SET NLS_TIMESTAMP_TZ_FORMAT = 'YYYY-MM-DD HH24:MI:SS.FF TZR TZD';
Query OK, 0 rows affected

```

**注意**

- `MONTHS_BETWEEN` 返回值为 1 个数字。
 - `ROUND` 和 `TRUNC` 并不能进行隐式转换，必须传输 `DATE` 类型的数值，否则会报错。

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

| **函数分类** | **函数子分类** | **函数名** | **功能描述** |
| --- | --- | --- | --- |
| 单行函数 | 时间日期函数 | ADD_MONTHS | 返回在日期 `date` 基础上 `n` 个月后的日期值，如果 `n` 的值为负数则返回日期 `date` 基础上 `n` 个月前的日期值（`date` 减去 `n` 个月）。 |
| 单行函数 | 时间日期函数 | CURRENT_DATE | 返回当前会话时区中的当前日期。 |
| 单行函数 | 时间日期函数 | CURRENT_TIMESTAMP | 返回 `TIMESTAMP WITH TIME ZONE` 数据类型的当前会话时区中的当前日期，返回值中包含当前的时区信息。 |
| 单行函数 | 时间日期函数 | DBTIMEZONE | 返回当前数据库实例的时区，在 OceanBase 中数据库时区恒为+00:00，且不支持修改。 |
| 单行函数 | 时间日期函数 | EXTRACT (datetime) | 从指定的时间字段或表达式中抽取年、月、日、时、分、秒等元素。 |
| 单行函数 | 时间日期函数 | FROM_TZ | 将一个 `TIMSTAMP` 数据类型的值和时区信息拼成一个 `TIMESTAMP WITH TIME ZONE` 数据类型的时间值。 |
| 单行函数 | 时间日期函数 | LAST_DAY | 返回日期 `date` 所在月份的最后一天的日期。 |
| 单行函数 | 时间日期函数 | LOCALTIMESTAMP | 返回当前会话时区中的当前日期，返回 `TIMESTAMP` 数据类型的值。 |
| 单行函数 | 时间日期函数 | MONTHS_BETWEEN | 返回参数 `date1` 到 `date2` 之间的月数。 |
| 单行函数 | 时间日期函数 | NEW_TIME | OceanBase 暂不支持。 |
| 单行函数 | 时间日期函数 | NEXT_DAY | 返回日期 `d1` 的下一周中 `c1`（星期值）所在的日期值。 |
| 单行函数 | 时间日期函数 | NUMTODSINTERVAL | 把参数 `n` 转为以参数 `interval_unit` 为单位的 `INTERVAL DAY TO SECOND` 数据类型的值。 |
| 单行函数 | 时间日期函数 | NUMTOYMINTERVAL | 把参数 `n` 转为以 `interval_unit` 为单位的 `INTERVAL YEAR TO MONTH` 数据类型的值。 |
| 单行函数 | 时间日期函数 | ROUND (date) | 返回以参数 `fmt` 为单位距离的离指定日期 `date` 最近的日期时间值。 |
| 单行函数 | 时间日期函数 | SESSIONTIMEZONE | 返回当前会话时区。 |
| 单行函数 | 时间日期函数 | SYS_EXTRACT_UTC | 返回与指定时间相对应的标准 UTC 时间。 |
| 单行函数 | 时间日期函数 | SYSDATE | 返回当前日期。 |
| 单行函数 | 时间日期函数 | SYSTIMESTAMP | 返回系统当前日期，返回值的秒的小数位包含 6 位精度，且包含当前时区信息。 |
| 单行函数 | 时间日期函数 | TO_CHAR (datetime) | 将 `DATE`、`TIMESTAMP`、`TIMESTAMP WITH TIME ZONE`、`TIMESTAMP WITH LOCAL TIME ZONE`、`INTERVAL DAY TO SECOND` 和 `INTERVAL YEAR TO MONTH` 等数据类型的值按照参数 `fmt` 指定的格式转换为 `VARCHAR2` 数据类型的值。 |
| 单行函数 | 时间日期函数 | TO_DSINTERVAL | 将一个 `CHAR`、`VARCHAR2`、`NCHAR` 或 `NVARCHAR2` 数据类型的字符串转换为一个 `INTERVAL DAY TO SECOND` 数据类型的值，该函数可以用来对一个日期时间值进行加减计算。 |
| 单行函数 | 时间日期函数 | TO_TIMESTAMP | 将字符串转换为 `TIMESTAMP` 数据类型。 |
| 单行函数 | 时间日期函数 | TO_TIMESTAMP_TZ | 将字符串转换为 `TIMESTAMP WITH TIME ZONE` 数据类型，包含时区信息。 |
| 单行函数 | 时间日期函数 | TO_YMINTERVAL | 将一个 `CHAR`、`VARCHAR2`、`NCHAR` 或`NVARCHAR2` 数据类型的字符串转换为一个 `INTERVAL YEAR TO MONTH` 数据类型的值，该函数可以用来对一个日期时间值进行加减计算。 |
| 单行函数 | 时间日期函数 | TRUNC (date) | 返回以参数 `fmt` 为单位距离的离指定日期 `date` 最近的日期时间值，并且返回的日期值在 `date` 之前。 |
| 单行函数 | 时间日期函数 | TZ_OFFSET | 返回时区 `n` 的时区偏移量。时区偏移量是指与格林尼治标准时间 GMT 的差（小时和分钟）。 |

## 通用比较函数

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

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

## 转换函数

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

| **函数分类** | **函数子分类** | **函数名** | **功能描述** |
| --- | --- | --- | --- |
| 单行函数 | 转换函数 | ASCIISTR | 使用数据库字符集将任何字符集中的字符串转换为 ASCII 字符串。 |
| 单行函数 | 转换函数 | BIN_TO_NUM | OceanBase 暂不支持。 |
| 单行函数 | 转换函数 | CAST | 用于将一种内置数据类型转换为另一种内置数据类型。 |
| 单行函数 | 转换函数 | CHARTOROWID | 用于将 `CHAR`、`VARCHAR2`、`NCHAR` 或 `NVARCHAR2` 类型的字符串转换为 `ROWID` 数据类型。 |
| 单行函数 | 转换函数 | CONVERT | 用于将字符串从一种字符集转换为另一种字符集。 |
| 单行函数 | 转换函数 | HEXTORAW | 用于将 `CHAR`、`VARCHAR2`、`NCHAR` 或 `NVARCHAR2` 数据类型中包含十六进制数字的字符转换为 RAW 数据类型。 |
| 单行函数 | 转换函数 | NUMTODSINTERVAL | 将一个数值表达式加时间间隔单位转换为一个 `INTERVAL DAY TO SECOND` 数据类型的值。可以用来对一个日期时间值进行加减计算。 |
| 单行函数 | 转换函数 | NUMTOYMINTERVAL | 将一个数值表达式加时间间隔单位转换为一个 `INTERVAL YEAR TO MONTH` 数据类型的值。可以用来对一个日期时间值进行加减计算。 |
| 单行函数 | 转换函数 | RAWTOHEX | 将二进制数转换为一个相应的十六进制表示的字符串。 |
| 单行函数 | 转换函数 | ROWIDTOCHAR | 将 `rowid` 值转换为 `VARCHAR2` 数据类型的值。 |
| 单行函数 | 转换函数 | ROWIDTONCHAR | 将 `rowid` 值转换为 `NVARCHAR2` 数据类型的值。 |
| 单行函数 | 转换函数 | TO_BINARY_DOUBLE | 返回一个双精度的 64 位浮点数. |
| 单行函数 | 转换函数 | TO_BINARY_FLOAT | 返回一个单精度的 32 位浮点数。 |
| 单行函数 | 转换函数 | TO_BLOB | 将 `LONG RAW` 值和 `RAW` 值转换为 `BLOB` 值。 |
| 单行函数 | 转换函数 | TO_CHAR (character) | 将 `NCHAR`、`NVARCHAR2` 或 `CLOB` 数据转换为数据库字符集。 |
| 单行函数 | 转换函数 | TO_CHAR (datetime) | 将 `DATE`、`TIMESTAMP`、`TIMESTAMP WITH TIME ZONE`、`TIMESTAMP WITH LOCAL TIME ZONE`、`INTERVAL DAY TO SECOND` 和 `INTERVAL YEAR TO MONTH` 等数据类型的值按照参数 `fmt` 指定的格式转换为 `VARCHAR2` 数据类型的值。 |
| 单行函数 | 转换函数 | TO_CHAR (number) | 将 `NUMBER`、`BINARY_FLOAT` 或 `BINARY_DOUBLE` 类型的数值 `n` 按照指定数值格式 `fmt` 转换为 `varchar2` 数据类型的值。 |
| 单行函数 | 转换函数 | TO_CLOB | 将 `LOB` 列或其他字符串中的 `NCLOB` 值转换为 `CLOB` 值。 |
| 单行函数 | 转换函数 | TO_DATE | 将 `CHAR`、`VARCHAR`、`NCHAR` 或 `NVARCHAR2` 数据类型的字符转换为日期数据类型的值。 |
| 单行函数 | 转换函数 | TO_DSINTERVAL | 将一个 `CHAR`、`VARCHAR2`、`NCHAR` 或 `NVARCHAR2` 数据类型的字符串转换为一个 `INTERVAL DAY TO SECOND` 数据类型的值，该函数可以用来对一个日期时间值进行加减计算。 |
| 单行函数 | 转换函数 | TO_MULTI_BYTE | 用于将所有单字节字符转换为相应的多字节字符。 |
| 单行函数 | 转换函数 | TO_NUMBER | 将 `expr` 转换为数值数据类型的值。 |
| 单行函数 | 转换函数 | TO_NCHAR (character) | 将 `CHAR`、`VARCHAR2`、`CLOB` 或 `NCLOB` 类型的数据转换为国家字符集，返回 `NVARCHAR2` 数据类型。 |
| 单行函数 | 转换函数 | TO_NCHAR (datetime) | 将 `DATE`、`TIMESTAMP`、`TIMESTAMP WITH TIME ZONE`、`TIMESTAMP WITH LOCAL TIME ZONE`、`INTERVAL YEAR TO MONTH` 或 `INTERVAL DAY TO SECOND` 等数据类型的值从数据库字符集转换为国家字符集的数据类型。 |
| 单行函数 | 转换函数 | TO_NCHAR (number) | 将 `NUMBER`、`BINARY_FLOAT` 或 `BINARY_DOUBLE` 类型的数值转换为国家字符集中的字符串。 |
| 单行函数 | 转换函数 | TO_SINGLE_BYTE | 用于将所有多字节字符转换为相应的单字节字符。 |
| 单行函数 | 转换函数 | TO_TIMESTAMP | 将字符串转换为 `TIMESTAMP` 数据类型。 |
| 单行函数 | 转换函数 | TO_TIMESTAMP_TZ | 将字符串转换为 `TIMESTAMP WITH TIME ZONE` 数据类型，包含时区信息。 |
| 单行函数 | 转换函数 | TO_YMINTERVAL | 将一个 `CHAR`、`VARCHAR2`、`NCHAR` 或 `NVARCHAR2` 数据类型的字符串转换为一个 `INTERVAL YEAR TO MONTH` 数据类型的值，该函数可以用来对一个日期时间值进行加减计算。 |
| 单行函数 | 转换函数 | UNISTR | 将文本字面量和 Unicode 编码转换为国家字符集中的字符串。 |

## 编码解码函数

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

| **函数分类** | **函数子分类** | **函数名** | **功能描述** |
| --- | --- | --- | --- |
| 单行函数 | 编码解码函数 | DECODE | 会根据条件返回相应值。 |
| 单行函数 | 编码解码函数 | DUMP | 返回指定表达式的数据类型代码、字节长度和表达式的内部表示形式。 |
| 单行函数 | 编码解码函数 | ORA_HASH | 获取对应表达式的 HASH 值。 |
| 单行函数 | 编码解码函数 | VSIZE | 返回 `X` 的字节大小数。 |

## 空值相关函数

| **函数分类** | **函数子分类** | **函数名** | **功能描述** |
| --- | --- | --- | --- |
| 单行函数 | 空值相关函数 | COALESCE | 返回参数列表中第一个非空表达式，必须指定最少两个参数。 |
| 单行函数 | 空值相关函数 | LNNVL | 判断条件中的一个或者两个操作数是否为 `NULL`。 |
| 单行函数 | 空值相关函数 | NANVL | 用于判断输入值参数 `n1` 是不是 `NaN`（表示非数字），并返回结果。 |
| 单行函数 | 空值相关函数 | NULLIF | 用于比较两个参数表达式是否相等。 |
| 单行函数 | 空值相关函数 | NVL | 从两个表达式返回一个非 NULL 值。如果 `expr1` 与 `expr2` 的结果皆为 NULL 值，则 NVL 函数返回 NULL。 |
| 单行函数 | 空值相关函数 | NVL2 | 根据表达式是否为空，返回不同的值。 |

## 环境相关函数

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

| **函数分类** | **函数子分类** | **函数名** 称 | **功能描述** |
| --- | --- | --- | --- |
| 单行函数 | 环境相关函数 | SYS_CONTEXT | 返回当前时刻与上下文命名空间关联的参数的值。 |
| 单行函数 | 环境相关函数 | SYS_GUID | 生成并返回由 16 个字节组成的全局唯一标识符，即生成一个全局唯一序列号。 |
| 单行函数 | 环境相关函数 | UID | 返回当前登录用户的用户 ID。 |
| 单行函数 | 环境相关函数 | USER | 返回当前登录用户的名称。 |

## 层次函数

| 函数分类 | **函数子分类** | **函数名** 称 | **功能描述** |
| --- | --- | --- | --- |
| 单行函数 | 层次函数 | SYS_CONNECT_BY_PATH | 返回从根到节点的列值的路径，由 `CONNECT BY` 条件返回的每一行的列值用指定分隔符号分隔。 |

## 聚合函数

| **函数分类** | **函数子分类** | **函数名** | **功能描述** |
| --- | --- | --- | --- |
| 统计函数 | 聚合函数 | APPROX_COUNT_DISTINCT | 对参数列去重后的行数进行计算，返回行数值。 |
| 统计函数 | 聚合函数 | AVG | 返回数值列的平均值。 |
| 统计函数 | 聚合函数 | CORR | 用于计算一组数值对的相关系数。 |
| 统计函数 | 聚合函数 | COUNT | 用于查询参数 `expr` 的行数。 |
| 统计函数 | 聚合函数 | COVAR_POP | 用于计算一组数值对的总体协方差。 |
| 统计函数 | 聚合函数 | COVAR_SAMP | 用于计算一组数值对的样本协方差。 |
| 统计函数 | 聚合函数 | CUME_DIST | 用于计算一组值中的某个值的累积分布。 |
| 统计函数 | 聚合函数 | DENSE_RANK | 计算有序行组中行的秩。 |
| 统计函数 | 聚合函数 | GROUPING | 将 `GROUP BY` 子句扩展（如 `ROLLUP`）生成的超聚集行中的 `NULL` 和常规行中的 `NULL` 区分开来。 |
| 统计函数 | 聚合函数 | KEEP | 用于对一组行中的值进行操作，将这组行按照指定的排序规则排序后返回排在第一或最后的值。 |
| 统计函数 | 聚合函数 | LISTAGG | 用于列转行，`LISTAGG` 对 `ORDER BY` 子句中指定的每个组内的数据进行排序，然后合并度量列的值。 |
| 统计函数 | 聚合函数 | MAX | 返回参数中指定的列中的最大值。 |
| 统计函数 | 聚合函数 | MEDIAN | 用于返回一组数值的中值，即将一组数值排序后返回居于中间的数值。 |
| 统计函数 | 聚合函数 | MIN | 返回参数中指定列的最小值。 |
| 统计函数 | 聚合函数 | PERCENT_RANK | 用来计算一组值中的某个值的累积分布。 |
| 统计函数 | 聚合函数 | PERCENTILE_CONT | 是一个假定连续分布模型的逆分布函数。根据指定百分比值和排序规范，返回一个在该排序规范的给定百分比值的内插值。 |
| 统计函数 | 聚合函数 | PERCENTILE_DISC | 根据一个百分位值和指定排序规范，返回大于或等于百分位值的最小累积分布值（相对于同一排序规范）的值。 |
| 统计函数 | 聚合函数 | RANK | 用于计算一个值在一组值的排名。 |
| 统计函数 | 聚合函数 | REGR_ (Linear Regression) | 是线性回归函数，将普通最小二乘法回归线拟合到一组数字对上。 |
| 统计函数 | 聚合函数 | ROLLUP | 在数据统计和报表生成过程中，它可以为每个分组返回一个小计，同时为所有分组返回总计。 |
| 统计函数 | 聚合函数 | STDDEV | 用于计算总体标准差。 |
| 统计函数 | 聚合函数 | STDDEV_POP | 计算总体标准差。 |
| 统计函数 | 聚合函数 | STDDEV_SAMP | 计算样本标准差。 |
| 统计函数 | 聚合函数 | SUM | 返回参数中指定列的和。 |
| 统计函数 | 聚合函数 | VAR_POP | 返回一组数值集合的总体方差（忽略 `NULL`）。 |
| 统计函数 | 聚合函数 | VAR_SAMP | 返回一组数值集合的样本方差（忽略 `NULL`）。 |
| 统计函数 | 聚合函数 | VARIANCE | 返回参数指定列的方差。 |
| 统计函数 | 聚合函数 | APPROX_COUNT_DISTINCT | 计算某一列去重后的行数，返回的值是一个近似值，该函数可以进一步用于计算被引用的列的选择性。 |

## 分析函数

| **函数分类** | **函数子分类** | **函数名** | **功能描述** |
| --- | --- | --- | --- |
| 统计函数 | 分析函数 | AVG | 返回数值列的平均值。 |
| 统计函数 | 分析函数 | CORR | 用于计算一组数值对的相关系数。 |
| 统计函数 | 分析函数 | COUNT | 用于查询参数 `expr` 的行数。 |
| 统计函数 | 分析函数 | COVAR_POP | 用于计算一组数值对的总体协方差。 |
| 统计函数 | 分析函数 | COVAR_SAMP | 用于计算一组数值对的样本协方差。 |
| 统计函数 | 分析函数 | CUME_DIST | 计算一个值在一组值中的累积分布。 |
| 统计函数 | 分析函数 | DENSE_RANK | 计算有序行组中行的秩，并将秩作为 `NUMBER` 返回。 |
| 统计函数 | 分析函数 | FIRST_VALUE | 返回有序值中的第一个值。 |
| 统计函数 | 分析函数 | KEEP | 用于对一组行中的值进行操作，将这组行按照指定的排序规则排序后返回排在第一或最后的值。 |
| 统计函数 | 分析函数 | LAG | 提供对多行表的访问，而不需要自连接。 |
| 统计函数 | 分析函数 | LAST_VALUE | 返回一组有序值中的最后一个值。 |
| 统计函数 | 分析函数 | LEAD | 它提供了对表多行的访问，而无需进行自我连接。给定从查询返回的一些列行和光标的位置，`LEAD` 提供超出该位置的物理偏移量的行的访问。 |
| 统计函数 | 分析函数 | LISTAGG | 用于列转行。 |
| 统计函数 | 分析函数 | MAX | 返回参数中指定的列中的最大值。 |
| 统计函数 | 分析函数 | MEDIAN | 用于返回一组数值的中值，即将一组数值排序后返回居于中间的数值。 |
| 统计函数 | 分析函数 | MIN | 返回参数中指定列的最小值。 |
| 统计函数 | 分析函数 | NTILE | 将有序数据集划分为 `expr` 指示的若干桶，并为每一行分配适当的桶号。 |
| 统计函数 | 分析函数 | NTH_VALUE | 返回 `analytic_clause` 定义的窗口中第 `n` 行的 `measure_expr` 值。 |
| 统计函数 | 分析函数 | PERCENT_RANK | 类似于 `CUME_DIST`（累积分布）函数。 它的返回值范围为 0~1。任何集合中的第一行的`PERCENT_RANK` 函数为 0，返回值为 NUMBER。 |
| 统计函数 | 分析函数 | PERCENTILE_CONT | 是一个假定连续分布模型的逆分布函数。根据指定百分比值和排序规范，返回一个在该排序规范的给定百分比值的内插值。 |
| 统计函数 | 分析函数 | PERCENTILE_DISC | 根据一个百分位值和指定排序规范，返回大于或等于百分位值的最小累积分布值（相对于同一排序规范）的值。 |
| 统计函数 | 分析函数 | RANK | 基于 `OVER` 子句中的 `ORDER BY` 表达式确定一组值的排名。 |
| 统计函数 | 分析函数 | RATIO_TO_REPORT | 计算一个值与一组值之和的比率。 |
| 统计函数 | 分析函数 | REGR_ (Linear Regression) | 是线性回归函数，将普通最小二乘法回归线拟合到一组数字对上。 |
| 统计函数 | 分析函数 | ROW_NUMBER | 为应用它的每一行分配一个唯一的数字。 |
| 统计函数 | 分析函数 | STDDEV | 用于计算总体标准差。 |
| 统计函数 | 分析函数 | STDDEV_POP | 计算总体标准差。 |
| 统计函数 | 分析函数 | STDDEV_SAMP | 计算样本标准差。 |
| 统计函数 | 分析函数 | SUM | 返回参数中指定列的和。 |
| 统计函数 | 分析函数 | VAR_POP | 回一组数值集合的总体方差（忽略 `NULL`）。 |
| 统计函数 | 分析函数 | VAR_SAMP | 返回一组数值集合的样本方差（忽略 `NULL`）。 |
| 统计函数 | 分析函数 | VARIANCE | 返回参数指定列的方差。 |
| 统计函数 | 分析函数 | WMSYS.WM_CONCAT/WM_CONCAT | 用于列转行，将度量列的值进行合并。 |

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
