有区别的函数 ¶
序号 | MySQL函数名 | KingbaseES函数名 | 功能简要说明 |
---|---|---|---|
数值函数 | |||
1 | TRUNCATE(X,D) | trunc(n1 [, n2 ]) | 函数名不同,但函数功能都是截取数字为指定的小数位数 |
字符函数 | |||
1 | CONVERT(expr,type), | convert(string bytea,src_encoding name,dest_encoding name) | MySQL中,函数可转换参数的数据类型。KingbaseES中,函数转换字符串为指定编码格式 |
2 | EXPORT_SET(bits,on,off [,separator[,number_of_bits]]) | export_set(bits,on,off, separator,number_of_bit) | 将返回一个on字符串,对于未在bits中设置位,将返回一个off字符串。 返回一个字符串,对于在值bits中设置的位。与mysql相比,KingbaseES中 separator和number_of_bits参数必须指定,不可选 |
3 | FORMAT(X,D[,locale]) | format(formatstr text [, formatarg "any" [, ...] ]) | MySQL中,函数将数字四舍五入到指定小数位后,再按照 ‘#,###,###,##’格式进行格式化。KingbaseES中, 根据一个格式字符串产生格式化的输出,其形式类似于 C 函数 sprintf |
4 | INSTR(str,substr) | instr(expr1 text, expr2 text, [expr3 int[,expr4 int]]) | MySQL中,返回子串在字符串中第一个匹配项的位置索引。 KingbaseES中,扩展了位置参数 。 父字符串 expr1 中的第 expr3 个位置(从 1 开始) 以字符为单位开始查找第 expr4 次出现的子字符串的位置,0 表示不包含子字符串 expr2。 如果 expr3 为负,则从 expr1 的倒数第 expr3 个位置开始反向查找, 位置依然是从字符串开头算起 |
5 | LEFT(str,len) | left(str text, n int) | 返回字符串左侧指定数量的字符组成的子串 。指定数量为负数时,MySQL返回空串, KingbaseES返回除了最后n个字符之外的所有字符 |
6 | LENGTH(str) | length(string) | MySQL中,返回字符串的字节长度。 KingbaseES返回字符串的字符长度 |
7 | LTRIM(str) | ltrim(string text [, set text]) | 函数删除指定字符串左侧的空格。KingbaseES多一个可选参数set, 删除set中所有出现的字符,直到到达一个不在的字符 |
8 | MAKE_SET(bits,str1,str2,...) | MAKE_SET(bits,oid) | 返回一个SET值,该值由在bits中具有相应位的字符串组成。str1对应位0, str2对应位1,依次类推。str1,str2,…中的NULL值不会附加到结果中。 与mysql相比,KingbaseES中该值由指定SET类型在bits中具有相应位的字符串组成 |
9 | RTRIM(str) | rtrim(string text [, set text]) | 函数删除指定字符串右侧的空格。KingbaseES多一个可选参数set, 删除set中所有出现的字符,直到到达一个不在的字符 |
10 | SUBSTR(str,pos), SUBSTR(str FROM pos), SUBSTR(str,pos,len), SUBSTR(str FROM pos FOR len) | [ SUBSTR | SUBSTRB | SUBSTRC | SUBSTR2 |SUBSTR4 ] ( char , position [, substring_length] ) | MySQL有四种形式,函数从一个字符串中返回指定位置开始的子串。 KingbaseES中,函数功能也一致。此外 , SUBSTR使用输入字使用输入字符集定义的字符计算长度。 SUBSTRB使用字节而不是字符。SUBSTRC使用 Unicode 完整字符。 SUBSTR2使用UCS2 代码点。SUBSTR4使用 UCS4 代码点 |
时间日期函数 | |||
1 | CURRENT_TIME() | current_time(precision), mysql_current_time([n]) | KingbaseES的current_time函数返回带有时区的系统时间。mysql_current_time 兼容MySQL的current_time 函数,获取不带时区的系统时间 |
2 | CURRENT_TIMESTAMP() | current_timestamp(precision), mysql_current_timestamp([n]) | KingbaseES的current_timetimestamp函数返回带有时区的系统日期时间。 mysql_current_timestamp 兼容MySQL的 current_timestamp函数, 获取不带时区的系统日期时间 |
3 | EXTRACT(unit FROM date) | EXTRACT(field FROM source) | 从指定的日期时间中提取指定的部分,其中第一个参数是提取部分的标识, KingbaseES和 MySQL标识参数的值域不同 |
4 | LOCALTIME([fsp]) | localtime(), mysql_localtime([n]) | KingbaseES的localtime函数返回秒精度为6的系统时间。 mysql_localtime 兼容MySQL的localtime函数,秒精度可选 |
5 | LOCALTIMESTAMP([fsp]) | localtimestamp(), mysql_localtimestamp([n]) | KingbaseES的localtimestamp函数返回秒精度为6的系统日期时间。 mysql_localtimestamp 兼容MySQL的localtimestamp函数,秒精度可选 |
6 | NOW([fsp]) | now() | MySQL的now函数返回秒精度为0的系统日期时间, KingbaseES的now函数返回带时区秒精度为6的系统时间 |
7 | STR_TO_DATE(str,format) | STR_TO_DATE(str,format) | 字符串按照指定的日期时间格式进行格式化, KingbaseES和MySQL支持的格式化符号有所不同 |
聚集函数 | |||
1 | JSON_ARRAYAGG(col_or_expr) | json_agg(expression), jsonb_agg(expression), json_arrayagg(expression) | 将指定列或者表达式聚集为JSON数组 |
2 | JSON_OBJECTAGG(key, value) | json_object_agg(name, value), jsonb_object_agg(name, value), json_objectagg(name, value) | 将键值对聚集成JSON对象 |
JSON函数 | |||
1 | JSON_ARRAY([val[, val] ...]) | JSON_ARRAY ( [ { NULL | ABSENT } ON NULL ] [ { value_expression [ FORMAT JSON ] } [, ...] ] [ RETURNING data_type [ FORMAT JSON [ ENCODING UTF8 ]]]) | 返回包含所有参数的JSON数组。KingbaseES还提供了其他参数, 可以指定结果为NULL的行为,返回的结果数据类型, 详见 JSON_ARRAY |
2 | JSON_EXTRACT(json_doc, path [, path] ...) | json_extract_path(from_json json, VARIADIC path_elems text[]) | 功能都是在JSON数组中提取路径表达式指定的数据。 MySQL和KingbaseES指定路径表达式方式不同,MySQL需要使用$符号 |
3 | JSON_OBJECT([key, val [, key, val] ...]) | json_object( keys text[], values text[]) | 返回由参数指定的所有键值对的JSON对象。此外, KingbaseES json_object函数还支持另外两种语法 ,参见 JSON_OBJECT |
4 | JSON_TABLE( expr, path COLUMNS ( ( name FOR ORDINALITY |name type PATH string path [{NULL | ERROR | DEFAULT json_string} ON ERROR|EMPTY ] |name type EXISTS PATH string path | NESTED [PATH] path COLUMNS (column_list)[,...])) [AS] alias | json_table (context_item, path_expression [ AS json_path_name ] [ PASSING { value AS varname } [, ...] ] COLUMNS ( json_table_column [, ...] ) [PLAN ( json_table_plan )PLAN DEFAULT ( { INNER OUTER } [ , { CROSS UNION } ] | { CROSS | UNION } [ , { INNER OUTER } ] )][{ERROR|EMPTY} ON ERROR] ) | 从指定JSON数组中提取数据并返回一个包含指定列的关系表 KingbaseES和MySQL函数参数有所不同,详见 JSON_TABLE |