CHAR
声明
CHAR(value1,... [USING charset_name])
说明
将每个参数转换为整数,并返回由这些整数的代码值所给出的字符组成的字符串,并跳过 NULL 值。
此外,如果参数大于 255,则会将该参数被转换为多个结果字节。例如,CHAR(256) 等价于 CHAR(1,0),CHAR(256*256) 等价于 CHAR(1,0,0)。
默认情况下,CHAR() 返回的字符串的字符集是 binary,您可以通过 USING 子句来指定返回的字符集。
SELECT CHARSET(char('')), CHARSET(char('' USING utf8mb4));
+-------------------+---------------------------------+
| CHARSET(char('')) | CHARSET(char('' USING utf8mb4)) |
+-------------------+---------------------------------+
| binary | utf8mb4 |
+-------------------+---------------------------------+
1 row in set (0.001 sec)
如果返回的值在指定的字符集中是非法的,则会抛出一个 WARNING 提示。特别地,如果 sql_mode 设置为 STRICT_ALL_TABLES 或 STRICT_TRANS_TABLES 时,如果返回的值在指定的字符集中非法,则会返回 NULL。
有关 sql_mode 的详细信息,请参见 sql_mode。
SET SESSION sql_mode='STRICT_ALL_TABLES';
Query OK, 0 rows affected (0.000 sec)
SELECT CHAR(399 USING utf8);
+----------------------+
| CHAR(399 USING utf8) |
+----------------------+
| NULL |
+----------------------+
1 row in set, 1 warning (0.001 sec)
示例
SELECT CHAR(79,99,101,97,110,66,97.4,115,'101');
+------------------------------------------+
| CHAR(79,99,101,97,110,66,97.4,115,'101') |
+------------------------------------------+
| OceanBase |
+------------------------------------------+
1 row in set (0.001 sec)