0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MySQLで絵文字を条件に検索した時のめも

Last updated at Posted at 2024-08-21

タイトルそのままなのですが、動作確認用のデータとして絵文字が含まれるレコードを探す必要があり、その時の対応内容を記しておきます。

MySQLのバージョンは8.0.28です。

前提

自分の環境は以下の状態です。

  • 絵文字が登録可能なテーブル(DEFAULT CHARSET=utf8mb4)は既に存在している
  • DB自体のDEFAULT CHARSETutf8mb4ではない

utf8mb4とは何ぞや?とかcollationsって何さ!という方は以下の記事をご参照ください。

 

先に結論

mysqlコマンドで接続する時に--default-character-set=utf8mb4を追加してやればOK。

mysql -u username -h hostname --default-character-set=utf8mb4

普通に検索できました。

MySQL [db]> select * from bbs_threads where detail like '%🍣%'\G
************** 1. row **************
        id: 2
     title: 🍣🍣🍣🍣🍣
    detail: 🍣🍣🍣🍣🍣
created_at: 2024-06-17 03:35:21
updated_at: 2024-06-17 03:37:26
1 row in set (0.00 sec)

いつも通りに接続するとどうなるか

collationsが混在していると怒られました。

$ mysql -u username -h hostname
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 337138
Server version: 8.0.28 Source distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [db]> select * from bbs_threads where detail like '%🍣%'\G
ERROR 1267 (HY000): Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation 'like'

「Illegal mix of collations」で検索したところ、WHERE句にCOLLATEを指定すればエラー回避できるという記事を見たので試してみましたが、自分の環境ではうまくいかなかったです。

MySQL [db]> select * from bbs_threads where detail like '%🍣%' COLLATE utf8mb4_general_ci;
ERROR 1253 (42000): COLLATION 'utf8mb4_general_ci' is not valid for CHARACTER SET 'utf8mb3'

 
おまけ。
文字コード指定なしの接続だと、id指定で検索したらデータ取得はできたのですが、絵文字部分は正しく表示されませんでした。

MySQL [db]> select * from bbs_threads where id=2\G
************** 1. row **************
        id: 2
     title: ?????
    detail: ?????
created_at: 2024-06-17 03:35:21
updated_at: 2024-06-17 03:37:26
1 row in set (0.00 sec)

文字コードまわりはちゃんと理解したいけど追いついていないところです。。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?