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