sql >> データベース >  >> RDS >> Mysql

MySQLでは、CHAR()関数は奇妙に機能します

    MySQL 8.0.19より前は、直面している問題は存在しませんでした。 binary-as-hex クライアントオプションは、MySQL8.0.19からデフォルトで有効になっています。

    statusを実行します または\s MySQLで。バイナリデータに関する行に気付くでしょう。 16進数として言及されている場合、CHAR()などの関数の出力 およびUNHEX() 通常のテキストではなく16進数で表示されます。

    これを回避するには、CHAR()のUSINGcharset句を使用できます。 。

    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で実行する手順は次のとおりです。

    1. コマンドプロンプトを開きます。

    2. ディレクトリを変更します。私の場合、コマンドは次のとおりです。

      cd "C:\Program Files\MySQL\MySQL Server 8.0\bin"
      
    3. 実行

      mysql -u root -p --skip-binary-as-hex
      
    4. パスワードを入力してください。

    5. ここで、CHAR()の出力 機能は期待どおりになります。

    --skip-binary-as-hex このメソッドは、MySQLを終了するまで機能します。 --skip-binary-as-hexを使用する必要があります MySQLを開くたびに、16進値が表示されないようにする方法。

    詳細については、次のリンクを参照してください。



    1. SQLファイルを実行するときにmysqlエラーメッセージを無視する

    2. データベースからXMLを生成する際のPHPエンコーディングエラー

    3. MySQLで逆合成主キーを許可しない

    4. MySQLデータベースをメモリ内で完全に実行するにはどうすればよいですか?