字符表达式字符集和字符序
每个字符表达式都有一个字符集和一个字符序。
指定字符表达式的字符集和字符序
对于简单语句 SELECT 'string',该字符表达式的默认字符集和字符序由 character_set_connection 和 collation_connection 系统变量定义。
COLLATE 子句可以用于指定字符表达式的字符集和字符序,语法如下:
[_charset_name]'string' [COLLATE collation_name]
示例如下:
SELECT _utf8mb4'abc' COLLATE utf8mb4_unicode_ci;
+------------------------------------------+
| _utf8mb4'abc' COLLATE utf8mb4_unicode_ci |
+------------------------------------------+
| abc |
+------------------------------------------+
1 row in set (0.001 sec)
在指定 SQL 中常量的字符集时,对于 gb18030_2022,在十六进制数前添加 _gb18030_2022 可以将该编码转换为 gb18030_2022 下的相应字符。在字符串前添加 _gb18030_2022 可以指定该字符串的字符集为 gb18030_2022。
SELECT _gb18030_2022 0xCDE5 AS c FROM DUAL;
+-----+
| c |
+-----+
| 湾 |
+-----+
1 row in set (0.001 sec)
SELECT _gb18030_2022 '湾' AS c FROM DUAL;
+-----+
| c |
+-----+
| 婀 |
+-----+
1 row in set, 1 warning (0.000 sec)
选择字符表达式的字符集和字符序
seekdb 通过以下方式选择字符表达式的字符集和字符序:
-
如果同时指定了
_charset_name和COLLATE collation_name,则使用字符集charset_name和字符序collation_name。 -
如果指定了
_charset_name但未指定COLLATE,则使用字符集charset_name及其默认字符序。要查看每个字符集的默认字符序,请使用SHOW CHARACTER SET语句。 -
如果未指定
_charset_name但指定了COLLATE collation_name,则使用由character_set_connection系统变量和collation collation_name指定的默认字符集。collation_name必须是默认字符集支持的字符序。 -
如果既不指定
CHARACTER SET也不指定COLLATE,则使用由character_set_connection系统变量和collation collation_name指定的默认字符集。