dak ブログ

python、rubyなどのプログラミング、MySQL、サーバーの設定などの備忘録。レゴの写真も。

mysqlで文字列のキャラクタセットを変更する方法

2011-07-09 21:55:34 | mysql
mysqlで文字列のキャラクタセットの違いによるエラーが発生した場合の対処方法です。

テーブルのキャラクタセットが ascii で、文字列のキャラクタセットが utf8 の場合、strcmp('http://test.com/', url) とすると、エラーがでます。

`url` varchar(220) character set ascii collate ascii_bin default NULL,


mysql> select charset('http://test.com/');
+-----------------------------+
| charset('http://test.com/') |
+-----------------------------+
| utf8 |
+-----------------------------+


Illegal mix of collations (utf8_general_ci,COERCIBLE) and (ascii_bin,IMPLICIT) for operation 'strcmp'


この場合、cast() で文字列のキャラクタセットを変更することで、エラーがでなくなります。

strcmp(cast('http://test.com/' as binary), url)

または、文字列のキャラクタセットを _キャラクタセット で指定します。

strcmp(_binary 'http://test.com/', url)