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)




grepでパターンをファイルで指定する方法

2011-07-02 22:51:53 | linux
grepで検出したいパターンを以下のようにファイルで指定することもできます。

grep -f {パターンファイル} {ファイル}

パターンファイルは1行1パターンで指定します。

$ cat pat.txt
http://abc.com/
http://abc.com/def/
http://abc.com/def/ghi/

$ cat test.txt
http://abc.com/DEF/

$ grep -f pat.txt test.txt
http://abc.com/DEF/