[pgsql-jp: 24949] Re: 1テーブル内の複数の列に対しAND検索をかけるには?
Mashiki
mashiki @ yanah.com
2002年 2月 25日 (月) 20:35:13 JST
Mashikiです。
>FreeBSD上のPostgreSQL: 7.1.3をレンタルサーバー上で使用しています。
>項目がcolA,colB,colC,colD,colE,colFとあるようなテーブルにおいて、
>colB,colC,colD,colEのいずれかの列に、キーワードKey1とKey2を含む行を
>抽出したいと思い、以下のようにしてみたのですが、データ内に
>colB=Key1,colD=Key2のものがあっても見つけられません。
発想を変えてこんなのではどうでしょうか?
select *
from table1
where colB || colC || colD || colE like '%key1%'
and colB || colC || colD || colE like '%key2%'
インデックスはもともと使えないので、件数はそれほど多くないと
仮定しています。
カラム境界が気になるようでしたら、key1,key2に現れない区切り
文字をはさんでつなぎます。
例)
colB || ',' || colC ...
また、連結のためのコストが気になるのでしたら、colBCDEと言う名前の
連結した列をあらかじめ作っておきます。(ほんとに全文検索みたいですね)
pgsql-jp メーリングリストの案内