字符串函数
当GaussDB使用的字符编码是 SQL_ASCII 时,服务器会根据ASCII标准对字节值0~127进行解释,而字节值128~255则当作无法解析的字符。如果该函数的输入输出包含了任何非 ASCII 数据,数据库将无法帮助用户转换或者校验 非ASCII 字符,从而与MySQL的行为产生较大差异。
| 函数名 | 与MySQL的差异 |
|---|---|
| ASCII() | - |
| BIT_LENGTH() | - |
| CHAR_LENGTH() | 如果数据库字符集是SQL_ASCII,该函数会返回字节数而非字符数。 |
| CHARACTER_LENGTH() | |
| CONCAT() | - |
| CONCAT_WS() | - |
| HEX() | - |
| LENGTH() | - |
| LPAD() | MySQL默认最大填充长度为1398101,GaussDB默认最大长度为1048576。在不同字符集下,最大填充长度会有差异,例如字符集为GBK时,GaussDB默认最大长度为2097152。 |
| RPAD() | |
| MD5() | 当BINARY类型插入字符串长度小于目标长度时,GaussDB填充符和MySQL不同;因此导致入参为BINARY类型时,函数结果和MySQL不一致。 |
| RANDOM_BYTES() | GaussDB与MySQL都使用OPENSSL生成随机字符串。GaussDB使用OPENSSL3.x.x生成随机字符串,与使用OPENSSL1.x.x版本的MySQL相比性能可能存在劣化。 |
| REPEAT() | - |
| REPLACE() | 当第三个入参为null,且第二个入参的字符串长度不为0时,GaussDB返回NULL,MySQL可能返回第一个参数的字符。例如: -- GaussDB的行为:
m_db=# select replace('1.23', binary(1.1), null);
replace
---------
(1 row)
-- MySQL的行为:
mysql> select replace('1.23', binary(1.1), null);
+------------------------------------+
| replace('1.23', binary(1.1), null) |
+------------------------------------+
| 1.23 |
+------------------------------------+
1 row in set (0.00 sec) |
| SHA()/SHA1() | - |
| SHA2() | - |
| SPACE() | - |
| STRCMP() | - |
| FIND_IN_SET() | - |
| LCASE() | - |
| LEFT() | - |
| LOWER() | - |
| LTRIM() | - |
| REVERSE() | - |
| RIGHT() | - |
| RTRIM() | - |
| SUBSTR() | 第一个入参节点返回的字符序为BINARY时,MySQL可能依旧以不同的字符序逻辑处理(取决于内层嵌套的函数),而GaussDB以BINARY字符序进行函数处理,导致截取的字节长度不同。 |
| SUBSTRING() | |
| SUBSTRING_INDEX() |
|
| TRIM() | - |
| UCASE() | - |
| UPPER() | - |
| UNHEX() | - |
| FIELD() | - |
| COMPRESS() | - |
| 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() | - |
| OCTET_LENGTH() | - |