Warning: Trying to access array offset on value of type bool in /home/r1029599/public_html/engineer-log.net/wp-content/themes/simplicity2/lib/customizer.php on line 5404

MySQL 8.0.1でutf8mb4_ja_0900_as_csが導入された

Sushi = Beer ?! An introduction of UTF8 support in MySQL 8.0 | MySQL Server Blog (ユーザーによる日本語訳: 寿司=ビール問題 : MySQL 8.0でのUTF8サポート入門 (MySQL Server Blogより) | Yakst)で言及されていた日本語用の照合順序 utf8mb4_ja_0900_as_cs
MySQL 8.0.1 で実装されていたので試してみた。
mysql80> SHOW COLLATION LIKE 'utf8%ja%';
+-----------------------+---------+-----+---------+----------+---------+
| Collation             | Charset | Id  | Default | Compiled | Sortlen |
+-----------------------+---------+-----+---------+----------+---------+
| utf8mb4_ja_0900_as_cs | utf8mb4 | 303 |         | Yes      |      24 |
+-----------------------+---------+-----+---------+----------+---------+
1 row in set (0.00 sec)
まずは「ハハ=パパ」問題。 (MySQLは真偽値を0(=FALSE)と1(=TRUE)で返すのでそのつもりで)
mysql80> SELECT 'ハハ' = 'パパ' COLLATE utf8mb4_ja_0900_as_cs;
+---------------------------------------------------+
| 'ハハ' = 'パパ' COLLATE utf8mb4_ja_0900_as_cs     |
+---------------------------------------------------+
|                                                 0 |
+---------------------------------------------------+
1 row in set (0.04 sec)
ハハパパケースセンシティブ。 ひらがな=カタカナ問題。
mysql80> SELECT 'ハハ' = 'はは' COLLATE utf8mb4_ja_0900_as_cs;
+---------------------------------------------------+
| 'ハハ' = 'はは' COLLATE utf8mb4_ja_0900_as_cs     |
+---------------------------------------------------+
|                                                 1 |
+---------------------------------------------------+
1 row in set (0.00 sec)
ひらがなカタカナケースインセンシティブ。 次は半角全角。
mysql80> SELECT 'ハハ' = 'ハハ' COLLATE utf8mb4_ja_0900_as_cs;
+---------------------------------------------------+
| 'ハハ' = 'ハハ' COLLATE utf8mb4_ja_0900_as_cs       |
+---------------------------------------------------+
|                                                 1 |
+---------------------------------------------------+
1 row in set (0.00 sec)

mysql80> SELECT 'はは' = 'ハハ' COLLATE utf8mb4_ja_0900_as_cs;
+---------------------------------------------------+
| 'はは' = 'ハハ' COLLATE utf8mb4_ja_0900_as_cs       |
+---------------------------------------------------+
|                                                 1 |
+---------------------------------------------------+
1 row in set (0.00 sec)
半角全角ケースインセンシティブ。 拗音。
mysql80> SELECT 'びょういん' = 'びよういん' COLLATE utf8mb4_ja_0900_as_cs;
+---------------------------------------------------------------------+
| 'びょういん' = 'びよういん' COLLATE utf8mb4_ja_0900_as_cs           |
+---------------------------------------------------------------------+
|                                                                   0 |
+---------------------------------------------------------------------+
1 row in set (0.00 sec)
病院≠美容院。拗音ケースセンシティブ。 最後?=?だけ俺はウインドーズでターミナルから直接打ち込めないので画像で。
ちょっと見にくいけど0。
utf8mb4_binutf8mb4_general_ciutf8mb4_unicode_ciutf8mb4_unicode_520_ciutf8mb4_ja_0900_as_cs
Hiragana-Katakanacs (unkind)cs (unkind)ci (good)ci(good)ci(good)
Youoncs (good)cs (good)ci (critical)ci(critical)cs(good)
Dakuten-Handakutencs (good)cs (good)ci (critical)ci(critical)cs(good)
Wide-Narrowcs (unkind)cs (unkind)ci (good)ci(good)ci(good)
Sushi-Beercscicicscs
おおー、結構いいセン行ってるんじゃないだろうか。
なお、斎藤さんは斉藤さんかとかそういうことを考え出すと、どうすればいいのか俺にもよくわからないけど一応センシティブ(中国語圏の人とかどうあるべきだと思うんだろう)
mysql80> SELECT '斎藤' = '斉藤' COLLATE utf8mb4_ja_0900_as_cs;
+---------------------------------------------------+
| '斎藤' = '斉藤' COLLATE utf8mb4_ja_0900_as_cs     |
+---------------------------------------------------+
|                                                 0 |
+---------------------------------------------------+
1 row in set (0.00 sec)
あとはこの設定を秘伝のmy.cnfのmysqldセクションに書き込んでおけばOK。 character_set_server はデフォルトがutf8mb4になったけれど一応ついでに。
$ vim my.cnf
..
[mysqld]
character_set_server = utf8mb4
collation_server = utf8mb4_ja_0900_as_cs
..

投稿日:April 11th 2017

元記事:http://yoku0825.blogspot.com/2017/04/mysql-801utf8mb4ja0900ascs.html

– PR –
– PR –