在MySQL中,CHAR()函数工作异常
当我写CHAR()函数时。 例如:在MySQL中,CHAR()函数工作异常,mysql,char,Mysql,Char,当我写CHAR()函数时。 例如: mysql> select char(97); +--------------------+ | char(97) | +--------------------+ | 0x61 | +--------------------+ 我知道这是不对的 mysql> select char(97); +--------------------+ | char(97) | +------
mysql> select char(97);
+--------------------+
| char(97) |
+--------------------+
| 0x61 |
+--------------------+
我知道这是不对的
mysql> select char(97);
+--------------------+
| char(97) |
+--------------------+
| a |
+--------------------+
也许这是正确的情况,对吗
您能解释一下如何解决这个问题吗?在MySQL 8.0.19之前,您面临的问题并不存在<默认情况下,MySQL 8.0.19中启用了代码>二进制十六进制客户端选项 在MySQL中运行
status
或\s
。您将注意到一行关于二进制数据的内容。如果它被称为十六进制,那么像CHAR()
和UNHEX()
这样的函数的输出将显示为十六进制,而不是普通文本
要避免这种情况,可以使用CHAR()
的USING charset子句
或者,您可以使用——将二进制跳过为十六进制
。在Windows中要执行的步骤包括:
cd“C:\Program Files\MySQL\MySQL Server 8.0\bin”
mysql-u root-p——将二进制文件跳过为十六进制
CHAR()
函数的输出将与您期望的一样
--跳过二进制作为十六进制
方法一直有效。每次打开MySQL时,都需要使用--跳过二进制作为十六进制的方法,这样十六进制值就不会显示
有关详细信息,请参考以下链接:
在MySQL 8.0.19之前,您面临的问题并不存在<默认情况下,MySQL 8.0.19中启用了代码>二进制十六进制
客户端选项
在MySQL中运行status
或\s
。您将注意到一行关于二进制数据的内容。如果它被称为十六进制,那么像CHAR()
和UNHEX()
这样的函数的输出将显示为十六进制,而不是普通文本
要避免这种情况,可以使用CHAR()
的USING charset子句
或者,您可以使用——将二进制跳过为十六进制
。在Windows中要执行的步骤包括:
cd“C:\Program Files\MySQL\MySQL Server 8.0\bin”
mysql-u root-p——将二进制文件跳过为十六进制
CHAR()
函数的输出将与您期望的一样
--跳过二进制作为十六进制
方法一直有效。每次打开MySQL时,都需要使用--跳过二进制作为十六进制的方法,这样十六进制值就不会显示
有关详细信息,请参考以下链接:
这是a
的十六进制值。可能与上述内容有关,0x
表示该值为十六进制,0x61
表示该值为91
十进制。。。另外,您使用的是什么版本的mysql?您使用什么来运行查询(Linux命令行、sql gui等)?这里看起来不错:我使用8.0.22版本,在mac中使用mamp,这是a
的十六进制值。可能与上述内容有关,0x
表示该值为十六进制,0x61
表示该值为91
十进制。。。另外,您使用的是什么版本的mysql?您使用什么来运行查询(Linux命令行、sql gui等)?这里看起来不错:我使用8.0.22版本,在Mac中使用mamp
mysql> SELECT CHAR(97);
+--------------------+
| CHAR(97) |
+--------------------+
| 0x61 |
+--------------------+
1 row in set (0.00 sec)
mysql> SELECT CHAR(97 USING utf8mb4);
+------------------------+
| CHAR(97 USING utf8mb4) |
+------------------------+
| a |
+------------------------+
1 row in set (0.00 sec)