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)
テーブルのキャラクタセットが 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)