本节主要介绍 TDSQL PG 的 Oracle 模式中与原生 Oracle 内建函数的详细兼容对比信息。
数字函数
序号 | Oracle 数据库函数 | TDSQL PG 数据库是否支持 | 描述 |
1 | ABS(n) | 支持 | 返回指定参数 n 的绝对值。 |
2 | ACOS(n) | 支持 | 返回指定参数 n 的反余弦值。 |
3 | ASIN(n) | 支持 | 返回指定参数 n 的反正弦值。 |
4 | ATAN(n) | 支持 | 返回指定参数 n 的反正切值。 |
5 | ATAN2(n1, n2) | 支持 | 返回指定的参数 n1 和参数 n2 的反正切。 |
6 | BITAND(expr1, expr2) | 支持 | 返回两个参数 expr1, expr2 按位与运算后的结果。 |
7 | CEIL(n) | 支持 | 返回大于等于指定参数 n 的最小整数。 |
8 | COS(n) | 支持 | 返回指定参数 n 的余弦。 |
9 | COSH(n) | 支持 | 返回指定参数 n 的双曲余弦。 |
10 | EXP(n) | 支持 | 返回自然常数 e 的指定参数 n 的次幂。 |
11 | FLOOR(n) | 支持 | 返回小于或等于指定参数 n 的最大整数值。 |
12 | LN(n) | 支持 | 返回指定参数 n 的自然对数。 |
13 | LOG(n2, n1) | 支持 | 返回参数 n2 基于 参数 n1 的对数。 |
14 | MOD(n2, n1) | 支持 | 返回参数 n2 除以 参数 n1 的余数。 |
15 | NANVL(n2, n1) | 支持 | 如参数 n2 为 NaN 则返回 参数 n1,否则返回参数 n2。 |
16 | POWER(n2, n1) | 支持 | 返回参数 n2 的参数 n1 次幂。 |
17 | REMAINDER(n2, n1) | 支持 | 返回参数 n2 除以参数 n1 的余数。 |
18 | ROUND(n, integer) | 支持 | 将给定的数字 n 四舍五入到给定的小数位数 integer。 |
19 | SIGN(n) | 支持 | 返回指定参数 n 的符号,如-1,0或1, 表示负数,零或正数。 |
20 | SIN(n) | 支持 | 返回指定弧度值 n 的正弦。 |
21 | SINH(n) | 支持 | 返回指定数值 n 的双曲正弦。 |
22 | SQRT(n) | 支持 | 返回指定参数 n 的平方根。 |
23 | TAN(n) | 支持 | 返回指定弧度 n 的正切。 |
24 | TANH(n) | 支持 | 返回指定数值 n 的双曲正切。 |
25 | TRUNC(n1, n2) | 支持 | 将指定的数字 n1 截断到指定的精度 n2(默认为0)并返回结果。 |
26 | WIDTH_BUCKET(numeric <expr>, numeric <min_value>, numeric <max_value>, int <num_buckets>) | 支持 | 返回指定值 expr 位于指定范围[min_value, max_value]和个数 num_buckets 的桶中的位置。 |
字符串函数
序号 | Oracle 数据库的函数 | TDSQL PG 数据库是否支持 | 描述 |
1 | CHR(n) CHR(n USING NCHAR_CS) | 支持 | 返回指定参数 n 对应的字符,如指定 USING NCHAR_CS ,则返回国家字符集中的值。 |
2 | CONCAT(char1, char2) | 支持 | 返回一个字符串,由两个参数值 char1 和 char2 拼接结果。 |
3 | INITCAP(char) | 支持 | 返回一个字符串,它将参数指定的字符串中的每个单词的首字母转为大写,其他字母转为小写。 |
4 | LOWER(char) | 支持 | 返回给定字符串的小写形式。 |
5 | LPAD(expr1, n, expr2) | 支持 | 返回一个字符串,它使用给定的字符序列填充到原字符串的左侧,使其具有指定的长度。 |
6 | LTRIM(char, set) | 支持 | 返回一个删除任何指定的前导字符(默认为空格)的字符串。 |
7 | NCHAR(number) | 支持 | 返回一个字符,是给定的整数参数对应的 NVARCHAR2 类型的字符 |
8 | NLS_INITCAP(char, 'nlsparam') | 支持 | 返回一个字符串,它将参数指定的字符串中的每个单词的首字母转为大写,其他字母转为小写。 |
9 | NLS_LOWER(char, 'nlsparam') | 支持 | 返回给定字符串的小写形式。 |
10 | NLS_UPPER(char, 'nlsparam') | 支持 | 返回给定字符串的大写形式。 |
11 | NLSSORT(char, 'nlsparam') | 支持 | 返回给定字符串的排序规则键以及显式或隐式指定的排序规则。 |
12 | REGEXP_REPLACE(source_char, pattern) REGEXP_REPLACE(source_char, pattern, replace_string) REGEXP_REPLACE(source_char, pattern, replace_string, position) REGEXP_REPLACE(source_char, pattern, replace_string, position, occurrence) REGEXP_REPLACE(source_char, pattern, replace_string, position, occurrence, match_param) | 支持 | 在一个字符串中 source 使用新内容 replace_string 替换一个和指定的正则表达式 pattern 匹配的内容,返回替换后的内容。 可通过 position 指定开始搜索的起始位置。默认为1。 可指定 occurrence 返回第几次出现结果。默认为0,即全部替换。 可指定 match_param 执行采用的匹配模式,如 'i' 指定不区分大小写的匹配,即使确定的条件排序规则区分大小写。 |
13 | REGEXP_SUBSTR(source_char, pattern) REGEXP_SUBSTR(source_char, pattern, position) REGEXP_SUBSTR(source_char, pattern, position, occurrence) REGEXP_SUBSTR(source_char, pattern, position, occurrence, match_param) REGEXP_SUBSTR(source_char, pattern, position, occurrence, match_param, subexpr) | 支持 | 从一个给定的源字符串 source_char 中搜索并返回一个与给定的正则表达式 pattern 匹配的字符串。 可指定 position 表示开始搜索的起始位置。默认为1。 可指定 occurrence 返回第几次出现的结果。默认为1。 可指定 match_param 执行采用的匹配模式,如 'i' 指定不区分大小写的匹配,即使确定的条件排序规则区分大小写。 |
14 | REPLACE(char, search_string [, replacement_string ]) | 支持 | 返回一个字符串,它将源字符串中的所有的 search_string 用 replacement_string 替换掉。 |
15 | RPAD(str, len [, padstr ]) | 支持 | 返回一个字符串,把指定的字符序列 padstr (默认为空格)填充到原字符串 str 的右侧,使其具有指定的长度 len。 |
16 | RTRIM(str [, set ]) | 支持 | 返回一个字符串,其为删除 str 指定的尾随字符 set(默认为空格)的字符串。 |
17 | SOUNDEX(str) | 支持 | 将普通字符串 str 转换为 SOUNDEX 字符串,Soundex 是一种语音算法。如果两个单词听起来相同,则它们应具有相同的 Soundex 字符串。 |
18 | SUBSTR(char, position [, substring_length ]) | 支持 | 从一个字符串 char 中返回一个从指定位置 position 开始的指定长度substring_length (如果不指定,则提取到原字符串的结尾)的子字符串。 |
19 | TRANSLATE(string, from_string, to_string) | 支持 | 返回一个翻译后的字符串,将 string 中的所有在 from_string 指定的字符翻译成在 to_string 中对应的字符。 |
20 | TRIM(str) TRIM(trim_character FROM str) TRIM({BOTH / LEADING / TRAILING} trim_character FROM str) | 支持 | 返回一个删除任何指定的前导和尾随字符(默认为空格)的字符串。 如果不指定 BOTH, LEADING,TRAILING ,则默认值为 BOTH 。如果不指定 trim_character ,则默认值为一个空格。 |
21 | UPPER(str) | 支持 | 返回指定字符串 str 的大写形式。 |
22 | ASCII(character) | 支持 | 根据数据库字符集返回字符型数值 character 第一个字符的 ascii 码。 |
23 | INSTR(string , substring [, position [, occurrence ] ]) | 支持 | 返回一个整数,子字符串 substring 在字符串 string 中的索引位置。 |
24 | LENGTH(str) | 支持 | 返回指定字符串 str 的长度。 |
25 | REGEXP_COUNT(source_char, pattern) REGEXP_COUNT(source_char, pattern, position) REGEXP_COUNT(source_char, pattern, position, match_param) | 支持 | 返回一个整数,指定的正则表达式 pattern 模式在一个源字符串 source_char 中出现的次数。 position 可选的, 是一个整数,表示开始搜索的起始位置。默认为 1 。match_param 可选的, 表示执行匹配采用的模式,包括: 'i' 指定不区分大小写的匹配,即使确定的条件排序规则区分大小写。'c' 指定区分大小写和区分重音的匹配,即使确定的条件排序规则不区分大小写或不区分重音。'n' 允许句点 (. )(匹配任意字符)匹配换行符。如果省略此参数,则句点与换行符不匹配。'm' 将源字符串视为多行。'x' 忽略空白字符。 |
26 | REGEXP_INSTR(source_char, pattern) REGEXP_INSTR(source_char, pattern, position) REGEXP_INSTR(source_char, pattern, position, occurrence) REGEXP_INSTR(source_char, pattern, position, occurrence, return_opt) REGEXP_INSTR(source_char, pattern, position, occurrence, return_opt, match_param) REGEXP_INSTR(source_char, pattern, position, occurrence, return_opt, match_param, subexpr) | 支持 | 返回一个整数,其为指定的正则表达式 pattern 模式在一个源字符串 source_char 中匹配的子串的索引。 position 可选的。它是一个整数,指示开始搜索的起始位置。默认为 1。occurrence 可选的。它是一个整数,指示要返回的是第几次出现。默认为1。return_opt 可选的。指定返回哪一种位置索引。如果为0,返回匹配的子串的第一个字符的位置索引;如果为1,返回匹配的子串的后面的位置索引。默认为0。 subexpr 可选的, 从0到9,0 表示整个正则表达式, 1-9 表示正则表达式中的分组。默认值为 0 。 |
日期函数
序号 | Oracle 数据库的函数 | TDSQL PG 数据库是否支持 | 描述 |
1 | ADD_MONTHS(date, months) | 支持 | 在指定的日期 date 上增加或减少指定月数 months。 |
2 | CURRENT_DATE | 支持 | 返回当前会话时区对应的当前日期。 |
3 | CURRENT_TIMESTAMP | 支持 | 返回当前会话时区中的当前日期和时间。 |
4 | DBTIMEZONE | 支持 | 返回数据库的时区。 |
5 | EXTRACT(field FROM expr) | 支持 | 从日期时间或间隔表达式 expr 中提取并返回指定的日期字段 field 的值。field包括 YEAR, MONTH, DAY, HOUR, MINUTE, SECOND。 |
6 | FROM_TZ(timestamp_value, time_zone_value) | 支持 | 将一个时间戳值 timestamp_value 和时区值 time_zone_value 转换为一个带有时区的时间戳值, 如: FROM_TZ(TIMESTAMP '2024-03-20 13:14:52', '+05:00') => 2024-03-20 13:14:52.000000000 +05:00 |
7 | LAST_DAY(date) | 支持 | 返回指定日期 date 所在月份的最后一天。 |
8 | LOCALTIMESTAMP LOCALTIMESTAMP(precision) | 支持 | 返回当前会话时区中的当前日期和时间。precision 可选,表示返回时间值的小数秒精度。 |
9 | MONTHS_BETWEEN(date1, date2) | 支持 | 返回两个给定日期之间的月数。 |
10 | NEXT_DAY(date, char) | 支持 | 返回晚于指定日期的指定第一个工作日的日期, 如 NEXT_DAY('2024-03-20', 'Tuesday') => 2024-03-26 00:00:00 |
11 | NUMTODSINTERVAL(n, 'interval_unit') | 支持 | 将指定的数字 n 转为 INTERVAL DAY TO SECOND 文本。interval_unit 包括 DAY ,HOUR ,MINUTE ,SECOND 等。 |
12 | NUMTOYMINTERVAL(n, 'interval_unit') | 支持 | 将指定的数字转为 INTERVAL YEAR TO MONTH 文本。interval_unit 包括 'YEAR' 和 'MONTH'。 |
13 | ROUND(date) ROUND(date, fmt) | 支持 | 将指定的日期 date 四舍五入到指定的单位。 fmt 可选,指定四舍五入的单位,如未指定此参数,date 将被四舍五入到最近的天, 如 YYYY , YEAR , MONTH 等。 |
14 | SESSIONTIMEZONE | 支持 | 返回当前会话的时区的值,返回类型是时区偏移量(格式 [+|-]TZH:TZM )或时区区域名称。 |
15 | SYS_EXTRACT_UTC(datetime_with_timezone) | 支持 | 从具有时区偏移量或者时区名的日期时间值 datetime_with_timezone 中提取 UTC。 |
16 | SYSDATE | 支持 | 返回数据库服务器所在的操作系统设置的当前日期和时间。 |
17 | SYSTIMESTAMP | 支持 | 返回数据库服务器所在的操作系统设置的当前日期和时间,包括小数秒和时区。 |
18 | TO_CHAR(expr [, fmt [, 'nlsparam' ] ]) | 支持 | 将指定的日期时间或者间隔表达式 expr 根据指定的格式 fmt 转化为字符串。 |
19 | TO_DSINTERVAL(str, [ DEFAULT return_value ON CONVERSION ERROR ]) | 支持 | 将指定的字符串 str 参数转为一个 INTERVAL DAY TO SECOND 类型的值。 |
20 | TO_TIMESTAMP(str [ DEFAULT return_value ON CONVERSION ERROR ] [, fmt [, 'nlsparam' ] ]) | 支持 | 将指定的字符串 str 转为一个 TIMESTAMP 类型的值。 |
21 | TO_TIMESTAMP_TZ(str [ DEFAULT return_value ON CONVERSION ERROR ] [, fmt [, 'nlsparam' ] ]) | 支持 | 将指定的字符串 str 参数转为一个 TIMESTAMP WITH TIME ZONE 类型的值。 |
22 | TO_YMINTERVAL(str, [ DEFAULT return_value ON CONVERSION ERROR ]) | 支持 | 将指定的字符串 str 转为一个 INTERVAL MONTH TO YEAR 类型的值。 |
23 | TRUNC(date) TRUNC(date, fmt) | 支持 | 将指定的日期截断到指定的单位。 |
24 | TZ_OFFSET(tz) | 支持 | 根据语句的执行日期返回与参数对应的时区偏移量。 |
通用比较函数
序号 | Oracle 数据库的函数 | TDSQL PG 数据库是否支持 | 描述 |
1 | GREATEST(expr [, expr ]...) | 支持 | 返回给定的参数列表中的最大值。 |
2 | LEAST(expr [, expr ]...) | 支持 | 返回给定的参数列表中的最小值。 |
转换函数
序号 | Oracle 数据库的函数 | TDSQL PG 数据库是否支持 | 描述 |
1 | ASCIISTR(str) | 支持 | 以数据库字符集返回给定字符串的 ASCII 版本。 |
2 | BIN_TO_NUM(expr [, expr ]... ) | 支持 | 返回由参数指定的位向量转换为的数字。 |
3 | CAST({ expr | MULTISET (subquery) } AS type_name [ DEFAULT return_value ON CONVERSION ERROR ] [, fmt [, 'nlsparam' ] ]) | 支持 | 将指定的参数 expr 从一种类型转换为另一种类型 type_name。 |
4 | CHARTOROWID(rowid_str) | 支持 | 将指定的字符串值 rowid_str 转换为 ROWID 数据类型。 |
5 | CONVERT(char, dest_char_set[, source_char_set ]) | 支持 | 将指定的字符串 char 从一个字符集 source_char_set(默认值为数据库字符集)转为另一个字符集 dest_char_set。 |
6 | HEXTORAW(str) | 支持 | 将指定参数 str 的十六进制值转为原始值。 |
7 | RAWTOHEX(raw) | 支持 | 将原始值转换为一个包含其十六进制表示的字符值。 |
8 | ROWIDTOCHAR(rowid) | 支持 | 将给定的 rowid 值转为 VARCHAR2 类型。 |
9 | TO_BINARY_DOUBLE(expr [ DEFAULT return_value ON CONVERSION ERROR ] [, fmt [, 'nlsparam' ] ]) | 支持 | 将给定的表达式转换为双精度浮点数。 |
10 | TO_BINARY_FLOAT(expr [ DEFAULT return_value ON CONVERSION ERROR ] [, fmt [, 'nlsparam' ] ]) | 支持 | 将给定的表达式转换为浮点数。 |
11 | TO_CHAR (character) | 支持 | 将 NCHAR 、 NVARCHAR2 、 CLOB 或 NCLOB 数据转换为数据库字符集。 |
12 | TO_CHAR (datetime) | 支持 | 将给定的日期时间或者间隔值根据指定的格式转化为字符串。 |
13 | TO_CHAR (number) | 支持 | 使用可选的格式参数将给定的数值转换为 VARCHAR2 数据类型的值。 |
14 | TO_DATE | 支持 | 根据可选的格式将给定的字符串日期转为 DATE 数据类型的值。 |
15 | TO_DSINTERVAL(str, [ DEFAULT return_value ON CONVERSION ERROR ]) | 支持 | 将给定的字符串参数转为一个 INTERVAL DAY TO SECOND 类型的值。 |
16 | TO_NCLOB(lob_column | char) | 支持 | 将 LOB 列或其他字符字符串中的 CLOB 值转换为 NCLOB 值。 |
17 | TO_MULTI_BYTE(char) | 支持 | 将给定的参数中的所有单字节字符转换为相应的多字节字符,并返回与参数相同数据类型的值。 |
18 | TO_NUMBER(expr [ DEFAULT return_value ON CONVERSION ERROR ] [, fmt [, 'nlsparam' ] ]) | 支持 | 将给定的参数转换为 NUMBER 数据类型的值。 |
19 | TO_SINGLE_BYTE(char) | 支持 | 将给定的参数中的所有多字节字符转换为相应的单字节字符,并返回与参数相同数据类型的值。 |
20 | TO_TIMESTAMP(str [ DEFAULT return_value ON CONVERSION ERROR ] [, fmt [, 'nlsparam' ] ]) | 支持 | 将给定的字符串参数转为一个 TIMESTAMP 类型的值。 |
21 | TO_TIMESTAMP_TZ(str [ DEFAULT return_value ON CONVERSION ERROR ] [, fmt [, 'nlsparam' ] ]) | 支持 | 将给定的字符串参数转为一个 TIMESTAMP WITH TIME ZONE 类型的值。 |
22 | TO_YMINTERVAL(str, [ DEFAULT return_value ON CONVERSION ERROR ]) | 支持 | 将给定的字符串参数转为一个 INTERVAL MONTH TO YEAR 类型的值。 |
编码解码函数
序号 | Oracle 数据库的函数 | TDSQL PG 数据库是否支持 | 描述 |
1 | DUMP(expr[, return_fmt [, start_position [, length ] ] ]) | 支持 | 返回一个 VARCHAR2 值,其中包含 expr 的数据类型代码、字节长度和内部表示。 |
2 | STANDARD_HASH(expr [, 'method' ]) | 支持 | 使用由美国国家标准与技术研究所定义和标准化的多个哈希算法之一,为给定的表达式计算哈希值。method 有效算法为 SHA1 、SHA256 、SHA384 、SHA512 和 MD5 。如果省略此参数,则使用 SHA1 。 |
3 | VSIZE(expr) | 支持 | 返回给定表达式的内部表示中的字节数。 |
4 | DECODE(expr, search, result [, search, result ]... [, default ]) | 支持 | 根据一个或多个给定的映射关系将给定的参数解码并返回解码后的值。 |
5 | ORA_HASH(expr [, max_bucket [, seed_value ] ]) | 支持 | 计算给定表达式的哈希值,确定哈希函数返回的最大桶值。可指定0到 4294967295之间的任何值。默认值为4294967295。 |
环境和标识符函数
序号 | Oracle 数据库的函数 | TDSQL PG 数据库是否支持 | 描述 |
1 | UID | 支持 | 返回当前会话的用户的唯一标识。 |
2 | USER | 支持 | 返回当前会话的用户的名称。 |
3 | USERENV | 支持 | 返回用户环境信息。 |
空值相关的函数
序号 | Oracle 数据库的函数 | TDSQL PG 数据库是否支持 | 描述 |
1 | COALESCE(expr1[, expr2 ...]) | 支持 | 返回参数列表中的第一个非 NULL 值。 |
2 | LNNVL(condition) | 支持 | 如果条件为 TRUE 就返回 FALSE 。如果条件为 FALSE 或者 UNKNOWN 就返回 TRUE 。 |
3 | NANVL(num1, num2) | 支持 | 如果 num1 是 NaN , 返回 num2 ,否则返回 num1 。 |
4 | NULLIF(expr1, expr2) | 支持 | 比较两个参数,如果两个参数相等就返回 NULL ,否则返回第一个参数。 |
5 | NVL(expr1, expr2) | 支持 | 如果 expr1 为 NULL ,则返回 expr2 。如果 expr1 不为 NULL ,则 NVL 返回 expr1 。 |
6 | NVL2(expr1, expr2, expr3) | 支持 | 如果 expr1 不为 NULL , 则返回 expr2 ,否则返回 expr3 。 |
JSON 函数
序号 | Oracle 数据库的函数 | TDSQL PG 数据库是否支持 | 描述 |
1 | JSON_OBJECT | 支持 | 返回一个 JSON 对象,其成员为参数指定的键值对。 |
XML 函数
序号 | Oracle 数据库的函数 | TDSQL PG 数据库是否支持 | 描述 |
1 | EXTRACT (XMLType_instance, XPath_string, namespace_string) | 支持 | 按 XPath_string 提取 XMLType_instance 内容,返回类型是 XMLtype。 |
2 | EXTRACTVALUE (XMLType_instance, XPath_string, namespace_string) | 支持 | 按 XPath_string 提取 XMLType_instance 中的 XML 值。 |
3 | PATH(correlation_integer) | 支持 | 返回指向父条件中指定的资源的相对路径。 |
4 | XMLAGG | 支持 | XMLAgg 是一个聚合函数, 采用 XML 片段的集合并返回聚合的 XML 文档。 |
5 | XMLEXISTS | 支持 | 检查给定的 XQuery 表达式是否返回非空 XQuery 序列。 如果是,返回 TRUE; 否则,返回 FALSE。 |
聚合函数 && 分析函数
序号 | Oracle 数据库的函数 | TDSQL PG 数据库是否支持 | 描述 |
1 | AVG | 支持 | 求指定表达式的平均值。 |
2 | COUNT | 支持 | 统计查询到的行数。 |
3 | LISTAGG | 支持 | 对于查询中的每一组,LISTAGG 依据 ORDER BY 表达式來排序该组的列,然后将这些值串联成单一字符串。 |
4 | MAX | 支持 | 求最大值。 |
5 | MIN | 支持 | 求最小值。 |
6 | SUM | 支持 | 求和。 |