暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

人大金仓 KingbaseES与MySQL的兼容性说明(3)

数据猿 2023-06-29
1970

有区别的函数 

表 3 有区别的函数 

序号

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

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论