web-dev-qa-db-ja.com

9つの異なる値に「LIKE」を使用するSQLステートメントを作成するにはどうすればよいですか?

次のすべてのレコードを選択する必要があります。

where FIELD2 like '%value21%'
or FIELD2 like '%value22%'
or FIELD2 like '%value23%'
-- repeat up to
or FIELD2 like '%value29%'

ここに、 value21、...、value29は、ユーザーがクエリを送信する前にフォームに入力できるパラメータです。それらは(後続ではない)数値コードであり、FIELD2は、文字列値を保持するデータベース列です。

SQLクエリを書き留めるのに最もコンパクトなフォームはどれですか?

注:これは 以前の質問 に関連していますが、これには等しいではなくLIKEが必要です。

8
tic

私はあなたが立ち往生しているのではないかと思います:

  WHERE (FIELD2 LIKE '%value21' OR 
         FIELD2 LIKE '%value22' OR 
         FIELD2 LIKE '%value23' ...)

少なくとも標準SQLでは(特定のエンジンが役立つ何らかの形式のフルテキストインデックスを提供する場合があります)。

このようなクエリは、多くの場合、単一のフィールド値に複数の値が格納されているデータベース設計の正規化の問題を示しています。それがあなたのケースに当てはまり、データベーススキーマをある程度制御できる場合は、できるだけ早く問題を修正することをお勧めします。それ以外の場合は、医療保険をチェックして、SQL誘発性精神病をカバーしていることを確認してください。これはあなたを夢中にさせる可能性があります。

18
Larry Lustig

一方通行:

select Field1, Field2 from Table where Field2 like '%val%'
UNION
select Field1, Field2 from Table where Field2 like '%val2%'
UNION
select Field1, Field2 from Table where Field2 like '%val2%'

等.

1
NotMe