更新时间:2024-11-26 GMT+08:00
分享

字符串函数

表1 字符串函数列表

MySQL数据库

GaussDB数据库

差异

BIN()

支持,存在差异

函数入参支持类型存在差异,GaussDB入参支持类型如下:

  • 整数类型:tinyint、smallint、mediumint、int、bigint
  • 无符号整数类型:tinyint unsigned、smallint unsigned、int unsigned、bigint unsigned
  • 字符和文本类型:char、varchar、tinytext、text、mediumtext、longtext,仅支持纯数字整数字符串,且整数范围在bigint范围内。
  • 浮点类型:float、real、double
  • 定点类型:numeric、decimal、dec
  • 布尔类型:bool

CONCAT()

支持,存在差异

无论参数的数据类型如何,concat返回值的数据类型始终为text;MySQL的concat在含有二进制类型参数时,返回值为二进制类型。

CONCAT_WS()

支持,存在差异

无论参数的数据类型如何,concat_ws返回值的数据类型始终为text;MySQL的concat_ws在含有二进制类型参数时,返回值为二进制类型,其他情况返回值为字符串类型。

ELT()

支持,存在差异

  • 函数入参1支持类型存在差异,GaussDB入参1支持类型如下:
    • 整数类型:tinyint、smallint、mediumint、int、bigint
    • 无符号整数类型:tinyint unsigned、smallint unsigned、int unsigned
    • 字符和文本类型:char、varchar、tinytext、text、mediumtext、longtext,仅支持纯数字整数字符串,且整数范围在bigint范围内。
    • 浮点类型:float、real、double
    • 定点类型:numeric、decimal、dec
    • 布尔类型:bool
  • 函数入参2支持类型存在差异,GaussDB入参2支持类型如下:
    • 整数类型:tinyint、smallint、mediumint、int、bigint
    • 无符号整数类型:tinyint unsigned、smallint unsigned、int unsigned、bigint unsigned
    • 字符和文本类型:char、varchar、tinytext、text、mediumtext、longtext
    • 浮点类型:float、real、double
    • 定点类型:numeric、decimal、dec
    • 布尔类型:bool
    • 大对象类型:tinyblob、blob、mediumblob、longblob
    • 日期类型:datetime、timestamp、date、time

FIELD()

支持,存在差异

函数入参为在bigint最大值~ bigint unsigned最大值范围内的数字,存在不兼容。

函数入参为浮点型float(m, d)、double(m, d)、real(m, d)时精度更高,存在不兼容。

FIND_IN_SET()

支持,存在差异

当数据库encoding = 'SQL_ASCII'时,不支持默认的大小写判断规则,即在用户不指定字符集规则的情况下,大写与小写区分判断。

INSERT()

支持,存在差异

  • Int64类型传参有范围限制,一旦超出-9223372036854775808~9223372036854775807范围会直接报错,MySQL对数值类型传参范围无限制,异常会告警按照上限或下限数值处理。
  • 字符串传参有限制,入参text类型字符串长度最大为2^30-5字节,入参bytea类型字符串长度最大为2^30-512字节。
  • s1和s2任意参数为bytea类型时,涉及到结果出现非法字符的情况可能展示结果与MySQL有差异但是字符编码与MySQL是一致的。

LOCATE()

支持,存在差异

入参1为bytea类型,入参2为text类型时,GaussDB与MySQL行为存在差异。

MAKE_SET()

支持,存在差异

  • bits参数为整型时,最大范围支持到int128,低于MySQL范围。
  • bits参数为日期类型datetime、timestamp、date、time,由于时间类型转整型与MySQL存在差异,目前均未做支持。
  • bit类型或bool类型由于此类数据类型GaussDB与MySQL存在差异,返回结果导致的差异为GaussDB与MySQL固有差异。bits入参为bool类型,str入参为bit类型与bool类型均不做支持。
  • bits入参为字符串或文本类型时,仅支持纯整型数字形式,其他形式存在差异。且纯整型数字范围限制在bigint范围。
  • str入参整型数值超过正负81个9,返回值与MySQL有差异。
  • str入参当以科学计数法表示时,GaussDB末尾0值会显示,MySQL不显示,以科学计数法打印,此为固有差异。

QUOTE()

支持,存在差异

  • 已知str字符串中含有“\Z”,“\r”,“\%”,“\_”,GaussDB未进行转义,与MySQL存在差异。斜线后跟部分数字也会引起差异,如“\563”。由转义字符引起的本函数与MySQL的差异,此为GaussDB与MySQL的转义字符差异。
  • str字符串中的“\b”,输出结果表现形式与MySQL有差异。此为GaussDB与MySQL的固有差异
  • str字符串中含有“\0”时,GaussDB由于UTF-8字符集不识别该字符,输入不成功。此为GaussDB与MySQL的固有差异
  • str为bit或bool类型时,由于GaussDB与MySQL此类型目前有差异,暂不支持此类类型。
  • GaussDB最大支持1GB数据传输,str入参长度最大支持536870908字节,函数返回结果字符串最大支持1GB。
  • str入参整型数值超过正负81个9,返回值与MySQL有差异。
  • str入参当以科学计数法表示时,GaussDB末尾0值会显示,MySQL不显示,以科学计数法打印,此为固有差异。

SPACE()

支持,存在差异

  • GaussDB入参最大支持1073741818字节,超出返回空字符串。MySQL的入参默认最大支持4194304字节,超出告警。
  • 函数入参支持类型存在差异,GaussDB入参支持类型如下:
    • 整数类型:tinyint、smallint、mediumint、int、bigint
    • 无符号整数类型:tinyint unsigned、smallint unsigned、int unsigned
    • 字符和文本类型:char、varchar、tinytext、text、mediumtext、longtext,仅支持纯数字整数字符串,且整数范围在bigint范围内。
    • 浮点类型:float、real、double
    • 定点类型:numeric、decimal、dec
    • 布尔类型:bool

SUBSTR()

支持

-

SUBSTRING()

支持

-

SUBSTRING_INDEX()

支持

-

STRCMP()

支持,存在差异

  • 函数入参支持类型存在差异,GaussDB入参支持类型如下:
    • 字符类型:char、varchar、nvarchar2、text
    • 二进制类型:bytea
    • 数值类型:tinying [unsigned]、smallint [unsigned]、integer [unsigned]、bigint [unsigned]、float4、float8、numeric
    • 日期时间类型:date、time without time zone、datetime、timestamptz
  • 对于数值类型中的浮点类型,由于连接参数设置不同,精度可能与M有差异,不建议使用该场景,或使用NUMERIC类型代替。

SHA() / SHA1()

支持

-

SHA2()

支持

-

相关文档