3. 常用函数
3.1. 有区别的函数
序号 | Oracle函数名 | KingbaseES函数名 | 功能简要说明 |
---|---|---|---|
数值函数 | |||
1 | REMAINDER(n2,n1) | / | 取 第一个参数除以 第二个参数的余 数,参数类型是 number或者可以 转换为number的 |
2 | NANVL(n2,n1) | / | 当n2为NaN 时,函数返回n1 当n2不为NaN时, 函数返回n2,参 数类型是浮点数 |
3 | / | cbrt(dp) | 立方根函数 |
4 | / | degrees(dp) | 把 弧度转换为角度 |
5 | / | radians(dp) | 把 角度转换为弧度 |
6 | / | div(y numeric,x numeric) | y/x的整数商 |
7 | / | pi() | 常数值 3.14159265358979 |
8 | / | scale(numeric) | 返回参数的精度 ,小数点后位数 |
字符函数 | |||
1 | CHR(int,[USING NCHAR_CS]) | chr(int) | 返回int类型参 数指定的值的字 符,KingbaseES 不允许为0,Oracle 可以输入0 |
2 | NCHR(number) | / | 返回 number类型值的 国际字符,Kingb aseES不支持超出 字符范围的数值 |
3 | REGEXP_REPLACE (source_char,pattern, replace_string,position, occurrence,match_param) | regexp_replace(string text,pattern text, replacement text [, flags]) | 替换 匹配。Oracle与 KingbaseES使用 方式部分不同, Oracle中,position代表从源第几个字符开始 occurrence代表第几次替换。 KingbaseES没有这个参数 |
4 | REGEXP_COUNT(source_char pattern[,position [,match_param]]) | regexp_count(source_char,pattern [,position, [,match_param]]) | 返回 匹配字符串数量。 Oracle与KingbaseES的某些数据类型不同 导致结果不同,例如time类型。 Oracle与KingbaseES的正则中 match_param的意义有部分不同导致结 果不同,可参考 正则表达式元语法 。 |
5 | REGEXP_INSTR(source_char, pattern [,position[,occurrence [,return_option [,match_param [,subexpr]]]]]) | regexp_instr(source_char,pattern [,position [,occurrence [,return_option [,match_param [,subexpr]]]]]) | 返回字 符串的起始位置,或者结束位置。 Oracle与KingbaseES的某些数据类型不同 导致结果不同,例如time类型。 Oracle与KingbaseES的正则中 match_param的意义有部分不同导致结 果不同,可参考 正则表达式元语法 。 |
6 | / | strpos(string,substring) position(substring in string) | 返回指定字符串位置 |
7 | / | convert(expr1 text,[,expr2 text],expr3 text) | 把字符串 转换为expr3 中声明的编码 |
8 | NLS_INITCAP(char,[NLS_SORT = sort]) | INITCAP(string) | 将每一个词 的第一个字母转 换为大写形式并 把剩下的字母转 换为小写形式。 |
9 | NLS_LOWER(char,nlsparam) | lower(string) | 将字符串 转换为小写形式 |
10 | CONCAT(char1,char2) | concat(str "any" [, str "any" [, ...]]) | 串接所有参数的 文本表示。NULL 参数被忽略。 Oracle :支持2个参数。 KingbaseES :支持多个参数 |
11 | / | regexp_matches(string text, pattern text[,flags text]) | 返回对 string匹配一个 POSIX正则表达式 得到的所有子串 |
日期类函数 | |||
1 | CURRENT_TIMESTAMP (precision) | CURRENT_TIMESTAMP | 返 回当前日期时间 区别是精度不同 |
2 | / | age(timestamp,timestamp) age(timestamp) | 减去参数,生成一个使用年、月(而不是只用日)的 "符号化"的结果 |
3 | / | clock_timestamp() | 返回 当前日期和时间 |
4 | / | date_part(text,timestamp) date_part(text,interval) | 返回 日期时间的子域 |
5 | TRUNC(date,fmt) | date_trunc(text,timestamp) date_trunc(text,interval) | 返回截断到参数指定的日期时间 |
6 | TO_DSINTERVAL(sql_format) | make_interval(years int DEFAULT 0, months int DEFAULT 0, weeks int DEFAULT 0, days intDE FAULT 0, hours int DEFAULT 0, mins int DEFAULT 0, secs double precision DEFAULT 0.0) | 构造一个interval,输入参数一个是字符串,一 个是数字 |
7 | / | now() | 返回 当前日期和时间 |
比较函数 | |||
1 | GREATEST(expr,expr,expr,...) LEAST(expr,expr,expr,...) | GREATEST(value[, ...]) LEAST(value [,...]) | 选取最大或者最小的数值 oracle:只要有一个参数是null,则结果返回null KingbaseES:全部参数是null才返回null |
序列函数 | |||
1 | / | currval(regclass) | 返回最近一 次用nextval获取 的指定序列的值 |
2 | / | nextval(regclass) | 递增 序列并返回新值 |
3 | / | setval(regclass,bigint) setval(regclass,bigint,boolean) | 设置序列的当前值 |
4 | / | lastval() | 返回最近一 次用nextval获取 的任何序列的值 |
大对象函数 | |||
1 | / | clob_import(string,string) | 将指定的文件以 clob大对象的形 式导入数据库。 |
2 | / | clob_export(clob,string,string) | 将clob 大对象的内容导 出到磁盘文件。 |
3 | / | blob_import(string,string) | 将指定的文件以 blob大对象的形 式导入数据库。 |
4 | / | blob_export(blob,string,string) | 将blob 大对象的内容导 出到磁盘文件。 |
Null相关函数 | |||
1 | NANVL(n2,n1) | CASE WHEN n2 is nan THEN n1 ELSE n2 END | 浮点数 NAN值判断,如 果n2是NAN则返回 n1,否则返回n2 |
2 | / | NULLIF(value1,value2) | 当value1和value2相等时,NULLIF返回一个空值。 否则它返回value1 |
Environment 和Identifier 函数 | |||
1 | / | version() | 返回当前版本号 |
分析和聚集函数 | |||
1 | COLLECT([DISTINCT UNIQUE] column [ORDER BY expr]) | array_agg(expression) | 形式上类似: KingbaseES返回 参数类型的数组 Oracle 返回参 数类型的嵌套表 |
2 | CORR_KCORR_S(expr1,expr2, [COEFFICIENT ONE_SIDED_SIG ONE_SIDED_SIG_POS ONE_SIDED_SIG_NEG TWO_SIDED_SIG]) | / | 相关率 |
3 | LISTAGG(measure_expr, delimiter) WITHIN GROUP(order_by_clause) | string_agg(expression,delimiter) | 输入 值连接成一个串 ,用定界符分隔 |
4 | MEDIAN(expr) | / | 返回中间值 |
5 | STATS_BINOMIAL_TEST (expr1, expr2, p) | / | 统 计二项测试是一 个精确概 率测试用于二分 变量,那里只有两 个可能值存在。 它测试一个样品 之间的差异比例 和给定的比例 |
6 | STATS_CROSSTAB(expr1,expr2) | / | 用于分析两个变量 |
7 | STATS_F_TEST(expr1,expr2) | / | 测试两个方差是否有明显的不同 |
8 | STATS_KS_TEST(expr1,expr2) | / | STATS_KS_TEST是柯尔莫哥洛 夫斯米尔诺夫函 数,它比较 expr1和expr2,判断他们是来自 同一个总体还是来自具有相同分布的总体。 |
9 | STATS_MODE(expr) | / | 将expr传入的一组值作为分析对象, 返回其中出现频率最高的值。 |
10 | STATS_MW_TEST(expr1,expr2) | / | 通过曼惠特尼测试比较两个独立样本,以检验 两个总体具有相同分布函数的零假设 与两个不同分布函数的备择假设 |
11 | STATS_ONE_WAY_ANOVA (expr1, expr2) | / | 单向方差分析函 数(统计一维方差 分析)测试差异在 意味着(为团体或 变量),通过比较 两种统计学意义 不同的估计方差 |
12 | STATS_T_TEST_ONE(expr1) | / | 单样本检验 |
13 | STATS_T_TEST_PAIRED (expr1, expr2) | / | 双样本匹配检验 |
14 | STATS_T_TEST_INDEP (expr1,expr2) | / | 具有相同方差的两个独立组检验 |
JSON函数 | |||
1 | / | to_json(anyelement) to_jsonb(anyelement) | 返回为json或者jsonb |
2 | / | array_to_json(anyarray [,pretty_bool]) | 把数组作为一个JSON 数组返回 |
3 | / | row_to_json(record [,pretty_bool]) | 把行作为一个JSON 对象返回 |
4 | / | json_build_array(VARIADIC "any") jsonb_build_array(VARIADIC "any") | 从一个可变参数列表构造一个可能包含异质类型的 JSON数组。 |
5 | / | json_build_object(VARIADIC "any") jsonb_build_object(VARIADIC "any") | 从一个可变参数列表构造一个JSON 对象 |
6 | / | json_object(text[]) jsonb_object(text[]) | 从一个文本数组构造一个JSON 对象 |
7 | / | json_array_length(json) jsonb_array_length(jsonb) | 返回最外层 JSON数组中的元素数量 |
8 | / | json_each(json) jsonb_each(jsonb) json_each_text(json) jsonb_each_text(jsonb) | 扩展最外层的JSON对象成为一组键/值对 |
9 | / | json_extract_path( from_json json,VARIADIC path_elems text[]) jsonb_extract_path( from_json jsonb,VARIADIC path_elems text[]) | 返回path_elems指向的JSON值(等效于#>操作符) |
10 | / | json_extract_path_text( from_json json, VARIADIC path_elems text[]) jsonb_extract_path_text( from_json jsonb, VARIADIC path_elems text[]) | text 以文本返回由path_elems指向的 JSON值(等效于#>>操作符) |
11 | / | json_object_keys(json) jsonb_object_keys(jsonb) | 返回最外层 JSON 对象中的键集合 |
12 | / | json_populate_record(base anyelement, from_json json) jsonb_populate_record(base anyelement, from_json jsonb) | 扩展from_json中的对象成一个行,它的 列匹配由base定义的记录类型 |
13 | / | json_populate_recordset (base anyelement, from_json json) jsonb_populate_recordset (base anyelement, from_json jsonb) | 扩展from_json中最外的对象数组为一个集合, 该集合的列匹配由base定义的记录类型 |
14 | / | json_array_elements(json) jsonb_array_elements(jsonb) | 把一个 JSON数组扩展成一个JSON 值的集合 |
15 | / | json_array_elements_text(json) jsonb_array_elements_text (jsonb) | 把一个 JSON数组扩展成一个text值集合 |
16 | / | json_typeof(json) jsonb_typeof(jsonb) | 把最外层的 JSON值的类型作为一个文本字符 串返回 |
17 | / | json_to_record(json) jsonb_to_record(jsonb) | 从一个 JSON对象构建一个任意的记录 |
18 | / | json_to_recordset(json) jsonb_to_recordset(jsonb) | 从一个 JSON对象数组构建一个任意的记录集合 |
19 | / | json_strip_nulls(from_json json) jsonb_strip_nulls(from_json jsonb) | 返回具有空值对象域的from_json。其它空值不变 |
20 | / | jsonb_set(target jsonb, path text[],new_value jsonb, [create_missing boolean]) | 若create_missing为真(缺省是true) 并且通过path指定部分不存在,那 么返回target,它具有 path指定部分, new_value 替换部分, 或者new_value 添加部分 |
21 | / | jsonb_insert(target jsonb, path text[], new_value jsonb,[insert_after boolean]) | 返回被插入了new_value对应的target |
22 | / | jsonb_pretty(from_json jsonb) | 作为缩进JSON文本返回from_json |