Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MySQL中,CHAR()函数工作异常_Mysql_Char - Fatal编程技术网

在MySQL中,CHAR()函数工作异常

在MySQL中,CHAR()函数工作异常,mysql,char,Mysql,Char,当我写CHAR()函数时。 例如: mysql> select char(97); +--------------------+ | char(97) | +--------------------+ | 0x61 | +--------------------+ 我知道这是不对的 mysql> select char(97); +--------------------+ | char(97) | +------

当我写CHAR()函数时。 例如:

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时,都需要使用
    --跳过二进制作为十六进制的方法,这样十六进制值就不会显示

    有关详细信息,请参考以下链接:


    在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时,都需要使用
    --跳过二进制作为十六进制的方法,这样十六进制值就不会显示

    有关详细信息,请参考以下链接:


    这是
    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)