[pgsql-jp: 24947] 1テーブル内の複数の列に対しAND検索をかけるには?

space @ try-net.or.jp space @ try-net.or.jp
2002年 2月 25日 (月) 19:45:53 JST


皆様はじめまして、Higataと申します。
よろしくお願いします。

FreeBSD上のPostgreSQL: 7.1.3をレンタルサーバー上で使用しています。
項目がcolA,colB,colC,colD,colE,colFとあるようなテーブルにおいて、
colB,colC,colD,colEのいずれかの列に、キーワードKey1とKey2を含む行を
抽出したいと思い、以下のようにしてみたのですが、データ内に
colB=Key1,colD=Key2のものがあっても見つけられません。

まずKey1を含むものとKey2を含むものとを抽出し、そのANDを取ることで
目的を達成できると思ったのですが、そもそも考え方がまずいのでしょうか?
それぞれのキーワードのみならばもちろん出てきます。

(select * from TABLE where colB like '%Key1%' 
union select * from TABLE where colC like '%Key1%' 
union select * from TABLE where colD like '%Key1%'
union select * from TABLE where colE like '%Key1%') 
intersect 
(select * from TABLE where colB like '%key2%' 
union select * from TABLE where colC like '%key2%' 
union select * from TABLE where colD like '%key2%' 
union select * from TABLE where colE like '%key2%')

テーブル全体のように複数の列に対する全文検索のようなことが
したかったのですがマニュアルなどを探すにつれて、可能なのか
どうなのかさえ判らなくなってしまいました。

みなさんの知恵をお借りできたらと思います。
よろしくお願いします。

干潟





pgsql-jp メーリングリストの案内