语法

CHAR(N,... [USING charset_name])

说明

CHAR() 将每个参数 N 解析为一个整数,并返回由这些整数对应的 ASCII 值组成的字符串。 NULL 值将被跳过。

mysql> SELECT CHAR(77,121,83,81,'76');//'MySQL','76'被解析为整数76
mysql> SELECT CHAR(77,77.3,'77.3');//'MMM',77.3与'77.3'均被解析为整数77

大于 255 的参数将转换为多个字节。 例如 CHAR(256) 等价于 CHAR(1,0) ,CHAR(256*256) 等价于 CHAR(1,0,0):

mysql> SELECT HEX(CHAR(1,0)), HEX(CHAR(256));
+----------------+----------------+
| HEX(CHAR(1,0)) | HEX(CHAR(256)) |
+----------------+----------------+
| 0100       | 0100       |
+----------------+----------------+
mysql> SELECT HEX(CHAR(1,0,0)), HEX(CHAR(256*256));
+------------------+--------------------+
| HEX(CHAR(1,0,0)) | HEX(CHAR(256*256)) |
+------------------+--------------------+
| 010000      | 010000         |
+------------------+--------------------+

默认情况下,CHAR() 返回一个二进制字符串。 要生成给定字符集的字符串,请使用可选的 USING 子句:

mysql> SELECT CHARSET(CHAR(X'65')), CHARSET(CHAR(X'65' USING utf8));
+----------------------+---------------------------------+
| CHARSET(CHAR(X'65')) | CHARSET(CHAR(X'65' USING utf8)) |
+----------------------+---------------------------------+
| binary         | utf8                |
+----------------------+---------------------------------+

如果使用 USING 字句指定了字符集并且结果字符串对于给定字符集是非法的,则会产生一个 warning。 如果启用了严格 SQL 模式,则 CHAR() 的结果将变为 NULL。

如果从 mysql 客户端中调用  CHAR() 函数,则使用十六进制表示法显示二进制字符串,具体取决于 –binary-as-hex 的值。 有关该选项的更多信息,请参阅:“mysql — MySQL 命令行客户端”。