[pgsql-jp: 34135] 全角「1」を含むlike検索で意図しないレコードが返される
Hiroshi Nomiyama
nomizo @ remus.dti.ne.jp
2004年 10月 22日 (金) 18:36:53 JST
はじめまして、野見山と申します。
Where条件句に全角の「1」を指定したlike検索で、意図しないレコードを含む結果が返ります。
原因等ご存知でしたら、ご教授いただけませんでしょうか。
環境 Red Hat Linux 9(2.4.20-8) + PostgreSQL 7.4.3にて、
以下のような構造のテーブル t_noun_dics に
Column | Type |
-----------+-----------------------+
dics_id | Integer |
noun_word | Character Varying[50] |
以下のようなデータが入っています。
dics_id | noun_word
---------+----------------------------------------
1 | 佐藤栄作
29 | 小泉純一郎
33 | 竹下登
31 | 佐藤 栄作
66 | 1
67 | 1111111222222233333
69 | 1111111222222233333
72 | 藤栄
74 | 藤栄作
ここで
select dics_id,noun_word from t_noun_dics where noun_word like '%1%';
を実行すると
dics_id | noun_word
---------+----------------------------------------
1 | 佐藤栄作
66 | 1
67 | 1111111222222233333
69 | 1111111222222233333
72 | 藤栄
74 | 藤栄作
(6 rows)
と、「1」を含まない「藤栄」と連続しているレコードもSELECTされました。('%1%'の1は全角です)
ilikeでも同じ結果となりました。
select dics_id,noun_word from t_noun_dics where noun_word like '%2%';
や
select dics_id,noun_word from t_noun_dics where noun_word like '%3%';
では、
dics_id | noun_word
---------+----------------------------------------
67 | 1111111222222233333
69 | 1111111222222233333
(2 rows)
となり、意図するデータがSELECTされました。
何かご存知でしたら、宜しく御願い致します。
----
Hiroshi Nomiyama nomizo @ remus.dti.ne.jp
pgsql-jp メーリングリストの案内