19
11

More than 3 years have passed since last update.

MySQLの文字列と照合順序について

Last updated at Posted at 2018-08-09

概要

CREATE文についているutf8utf8_general_ciなる文字
なんとなく理解しつつももやっとしていたので調べてメモしました。

指定方法

文字列の指定はcharsetで、照合順序についてはcollationで指定する。
指定はDB単位でもテーブル単位でもカラム単位でもできる。
charsetだけ指定すると、collateはデフォルトのものがつく

ciって?

ci:大文字小文字を区別しない
cs:大文字小文字を区別する
bin:バイナリ、大文字小文字を区別する

【MySQL】照合順序とは?
MySQLのCollationを理解するためにまとめてみた。

TIPS

utf8_general_ciを設定しているテーブルで、大文字小文字を区別して検索したい場合

collationには同じ文字コードのものしか指定できません

select * from user where id collate utf8_bin = 'Tom'

指定可能なcollationを確認する

下記のコマンドを実行すると一覧が表示されます

show collation;
または
show collation like 'utf8%';

mysqlのUTF8の4バイト問題について

charsetにutf8を指定すると4バイトを使用する文字(絵文字など)が格納できない
対応するにはutf8mb4を指定することで対応する

その際に、MySQLのバージョンが5.7.8以下の場合には、別途オプションを指定する必要がある。
詳しくは以下のサイトを参照
MySQL(InnoDB) で charset を utf8mb4 にする注意点の現在

何を指定しておけばいい?

utf8mb4_general_ciを指定(charsetにutf8mb4でOK)して、
大文字小文字の区別がしたい時だけSELECT文でcollate指定する。
理由;パフォーマンスがいい、大文字小文字区別する必要がある頻度少ない。

お願い

良かったと思った場合は、「いいね」を教えていただけると励みになります。
最後まで読んでいただきありがとうございました。

19
11
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
19
11