如何解决在 MySQL 中,CHAR() 函数的工作很奇怪
当我编写 CHAR() 函数时。 例如:
mysql> select char(97);
+--------------------+
| char(97) |
+--------------------+
| 0x61 |
+--------------------+
我知道这是不对的。
mysql> select char(97);
+--------------------+
| char(97) |
+--------------------+
| a |
+--------------------+
也许这是正确的情况,对吧?
你能解释一下我该如何解决这个问题吗?
解决方法
在 MySQL 8.0.19 之前,您面临的问题不存在。 binary-as-hex
客户端选项在 MySQL 8.0.19 中默认启用。
在 MySQL 中运行 status
或 \s
。您会注意到关于二进制数据的一行。如果以十六进制提及,CHAR()
和 UNHEX()
等函数的输出将显示为十六进制而不是普通文本。
为避免这种情况,您可以使用 CHAR()
的 USING 字符集子句。
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)
或者,您可以使用 --skip-binary-as-hex
。在 Windows 中要遵循的步骤是:
-
打开命令提示符。
-
更改目录。在我的情况下,命令是:
cd "C:\Program Files\MySQL\MySQL Server 8.0\bin"
-
运行
mysql -u root -p --skip-binary-as-hex
-
输入密码。
-
现在,
CHAR()
函数的输出将如您所愿。
注意:--skip-binary-as-hex
方法在您退出 MySQL 之前一直有效。每次打开 MySQL 时都需要使用 --skip-binary-as-hex
方法,这样就不会显示十六进制值。
您可以参考这些链接了解更多信息:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。