REGEXP on Mar 09, 2010 5:02 AM
March 9, 2010
MySQLのLIKE文による抽出で期待通りの検索結果を出してくれなかった。
「絵コンテ」でヒットするのに「コンテ」ではヒットしなかった。
(原因)
MySQL4.0以下では日本語は単なるバイナリ列と同程度の扱いだった。MySQL4.1以上では正式に多言語に対応したようである。EUC-JPでも問題が出にくいみたいだ。
1)LIKEで検索したいフィールドに「BINARY」を付加する
SELECT a FROM b LIKE BINARY 'ABC';
2)CREATE TABLE 時に varchar(255) BINARY と指定しておく
(簡単な回避方法)
3)バイナリが嫌ならLIKEの代わりにREGEXPを使う。これがオススメ
SELECT a FROM b WHERE target LIKE '%~%'
ではなくて、
SELECT a FROM b WHERE target REGEXP '~'
他には文字コードを明記しておいた方がよいかも
CREATE TABLE `tablename` (
`id` int(11) NOT NULL auto_increment,
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Posted by funa : 05:02 AM | Web | Comment (0) | Trackback (0)
| < March 2010 > | ||||||
| Sun | Mon | Tue | Wed | Thi | Fri | Sat |
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 | |||