• ベストアンサー

SQL(PostgreSQL) select文

SQLを始めたのですが、少しつまずいたので、質問させてください。 住所録検索等で、 SELECT * FROM test WHERE name LIKE '%goo%'; と書くと、nameというカラム名から goo という文字列の入ったレコードを 検索できると思います。 そこで、この goo という文字列を test テーブル全体から検索したいのですが わかりません。 teat テーブル全体から(どこのカラム名からでも)検索の仕方を教えてください。 初歩的な質問ですみません。 参考HPでもかまいません。

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

●SQLのウイークポイントをついたと思います。フィールドが分かれているデータベースが、歴史的に主流だったとおもうので、単一フィールドの全文検索の様なのは予想外対象外かと思う。しかし2,3のフィールドに一度に条件をつけたい時は度々ありますね。 ●#1の方のORを使えと解答がありますが、PostgreSQLの記述で、ANDの例では下記になるという説明を見つけました。ちょっと 意外です。残念ながら私には正否を判断する力がありません。 Where FieldName1 = 100 And (FieldName2 = "abc" Or FieldName2 = "xyz") ANDをORに置き換えてやって見てください。 ●下記3種を試みられては。 (1)WHERE FD1 LIKE ’・・・’ OR FD2 LIKE ’・・・’ OR ・・・ (2)FD1 LIKE ’・・・’等を( )で囲んでORで繋ぐ。 (3)上記のようにFD1 LIKE ’・・・’ OR (FD2 LIKE    ’・・・’ OR (・・・   )))) ●条件を検索する対象フィールドを、複数にして並べることを、許していない処理系もあるような気がする。PostgreSQLは大丈夫のよう です。 ●貴殿のデータベースが、文字列ばかりのフィールドなら、単一フィールドにデーターベースを定義しなおしは出来ませんか。

tosio_s
質問者

お礼

回答、説明、書き方教えてきただきありがとうございました。 自分でも、ここに質問する前にHP、書籍を見たのですが、やはり結果、 or で繋ぐことなんですね。 勉強になりました。 また、こういう問題ができましたら、よろしくお願いします。

その他の回答 (1)

  • MovingWalk
  • ベストアンサー率43% (2233/5098)
回答No.1

WHERE句に、全てのフィールド(カラム名)について条件設定してORでつなぐしかないと思います。

tosio_s
質問者

お礼

早い回答ありがとうございました。 やはり、全フィールドを設定しないの、ダメなんですね・・・。 わかりやすい回答、本当にありがとうございました。