概要
CREATE文についているutf8
やutf8_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指定する。
理由;パフォーマンスがいい、大文字小文字区別する必要がある頻度少ない。
お願い
良かったと思った場合は、「いいね」を教えていただけると励みになります。
最後まで読んでいただきありがとうございました。