[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 メーリングリストの案内