字符串函数
MySQL数据库 |
GaussDB数据库 |
差异 |
---|---|---|
ASCII() |
支持 |
- |
BIT_LENGTH() |
支持 |
- |
CHAR_LENGTH() |
支持,存在差异 |
GaussDB此函数如果数据库字符集是SQL_ASCII,CHAR_LENGTH()会返回字节数而非字符数。 |
CHARACTER_LENGTH() |
支持,存在差异 |
GaussDB此函数如果数据库字符集是SQL_ASCII,CHARACTER_LENGTH()会返回字节数而非字符数。 |
CONCAT() |
支持,存在差异 |
当MySQL返回值类型为二进制字符串类型(BINARY、VARBINARY、BLOB等)时,GaussDB对应的返回值类型为BLOB;当MySQL返回值类型为非二进制字符串类型(CHAR、VARCHAR、TEXT等)时,GaussDB对应的返回值类型为TEXT。 |
CONCAT_WS() |
支持,存在差异 |
当MySQL返回值类型为二进制字符串类型(BINARY、VARBINARY、BLOB等)时,GaussDB对应的返回值类型为BLOB;当MySQL返回值类型为非二进制字符串类型(CHAR、VARCHAR、TEXT等)时,GaussDB对应的返回值类型为TEXT。 |
HEX() |
支持 |
- |
LENGTH() |
支持 |
- |
LPAD() |
支持,存在差异 |
|
MD5() |
支持,存在差异 |
当BINARY类型插入字符串长度小于目标长度时,GaussDB填充符和MySQL不同;因此导致入参为BINARY类型时,函数结果和MySQL不一致。 |
RANDOM_BYTES() |
支持,存在差异 |
GaussDB与MySQL都使用OPENSSL生成随机字符串。GaussDB使用OPENSSL3.x.x生成随机字符串,与使用OPENSSL1.x.x版本的MySQL相比性能可能存在劣化。 |
REPEAT() |
支持,存在差异 |
当MySQL返回值类型为二进制字符串类型(BINARY、VARBINARY、BLOB等)时,GaussDB对应的返回值类型为BLOB;当MySQL返回值类型为非二进制字符串类型(CHAR、VARCHAR、TEXT等)时,GaussDB对应的返回值类型为TEXT。 |
REPLACE() |
支持,存在差异 |
|
RPAD() |
支持,存在差异 |
|
SHA()/SHA1() |
支持 |
- |
SHA2() |
支持 |
- |
SPACE() |
支持 |
- |
STRCMP() |
支持,存在差异 |
当GaussDB使用的字符编码是SQL_ASCII时,服务器会根据ASCII标准对字节值0~127进行解释,而字节值128~255则当作无法解析的字符。如果该函数的输入输出包含了任何非ASCII数据,数据库将无法帮助用户转换或者校验非ASCII字符,从而与MySQL的行为产生较大差异。 |
FIND_IN_SET() |
支持,存在差异 |
当GaussDB使用的字符编码是SQL_ASCII时,服务器会根据ASCII标准对字节值0~127进行解释,而字节值128~255则当作无法解析的字符。如果该函数的输入输出包含了任何非ASCII数据,数据库将无法帮助用户转换或者校验非ASCII字符,从而与MySQL的行为产生较大差异。 当MySQL返回值类型为二进制字符串类型(BINARY、VARBINARY、BLOB等)时,GaussDB对应的返回值类型为BLOB;当MySQL返回值类型为非二进制字符串类型(CHAR、VARCHAR、TEXT等)时,GaussDB对应的返回值类型为TEXT。 SUBSTRING 函数在第一个入参为嵌套场景下与MySQL存在差异:
SUBSTRING_INDEX函数存在差异:
|
LCASE() |
||
LEFT() |
||
LOWER() |
||
LTRIM() |
||
REVERSE() |
||
RIGHT() |
||
RTRIM() |
||
SUBSTR() |
||
SUBSTRING() |
||
SUBSTRING_INDEX() |
||
TRIM() |
||
UCASE() |
||
UPPER() |
||
UNHEX() |
支持,存在差异 |
MySQL的返回值类型为BINARY、VARBINARY、BLOB、MEDIUMBLOB或LONGBLOB;GaussDB返回值类型固定为LONGBLOB。 |
FIELD() |
支持 |
- |
COMPRESS() |
支持,存在差异 |
MySQL返回类型为VARBINARY、BLOB或LONGBLOB;GaussDB返回二进制字符串类型LONGBLOB。 |
UNCOMPRESS() |
支持 |
- |
UNCOMPRESS_LENGTH() |
支持 |
- |
EXPORT_SET() |
支持 |
- |
POSITION() |
支持 |
- |
LOCATE() |
支持 |
- |
CHAR() |
支持,存在差异 |
|
ELT() |
支持,存在差异 |
MySQL中ELT函数入参个数无限制,GaussDB函数的入参不超过8192个。 |
FORMAT() |
支持 |
- |
BIN() |
支持 |
- |
MAKE_SET() |
支持,存在差异 |
MySQL 5.7版本,当MAKE_SET函数选中的第一个参数为整型、浮点型或定点型且返回结果中存在非ASCII字符,显示结果可能为乱码;GaussDB显示结果正常,和MySQL 8.0版本保持一致。 |
TO_BASE64() |
支持 |
- |
FROM_BASE64() |
支持 |
- |
ORD() |
支持 |
- |
MID() |
支持 |
- |
QUOTE() |
支持,存在差异 |
|
INSERT() |
支持 |
- |
INSTR() |
支持 |
- |