Преди MySQL 8.0.19 проблемът, пред който сте изправени, не е съществувал. binary-as-hex
клиентската опция е активирана по подразбиране от MySQL 8.0.19.
Изпълнете status
или \s
в MySQL. Ще забележите ред за двоични данни. Ако е споменат като шестнадесетичен, изходи на функции като CHAR()
и UNHEX()
ще се покаже като шестнадесетичен вместо нормален текст.
За да избегнете това, можете да използвате клаузата USING charset на CHAR()
.
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. Трябва да използвате --skip-binary-as-hex
метод всеки път, когато отворите MySQL, така че шестнадесетичните стойности да не се показват.
Можете да се обърнете към тези връзки за повече информация:
- https://dev.mysql. com/doc/refman/8.0/en/string-functions.html#function_char
- https://dev.mysql.com/doc/refman/8.0/en/mysql-command-options.html#option_mysql_binary-as-hex