1

同じ値を使用する値の検索

SELECT Name, UnitPrice, Quantity, Color
FROM Product
WHERE Name Like '2' OR UnitPrice Like '2' OR Quantity LIKE '2' OR  Color LIKE '2'

Variable LIKE 'value' を繰り返す必要がないように文を短くする方法はありますか?

4

1 に答える 1

5

LIKEワイルドカードなしは=

SELECT Name, UnitPrice, Quantity, Color
FROM Product
WHERE '2' IN (Name, UnitPrice, Quantity, Color)

これは、一連の OR 条件に展開され
ます。文字列'2'は、OR 展開後に必要に応じてキャストされることに注意してください。

ワイルド カードと LIKEが必要な場合は、一連の OR ステートメントを使用する必要があります。

最後に、これはパフォーマンスに関してはスケーリングしません。適切なインデックス作成 (たとえば、列ごとに 1 つ、その他の 2 つを INCLUDE 列として) を使用すると、おそらく、それらの間に UNION を使用して個別のクエリとして記述した方がよいでしょう。

わかりやすくするために編集

OPはワイルドカードを使用したいと考えています。したがって、私のIN提案は機能しません。だからあなたはこれをしなければなりません

WHERE
    Name Like '%2%' OR
    UnitPrice Like '%2%' OR 
    Quantity LIKE '%2%' OR
    Color LIKE '%2%'

ワイルドカードが先頭にあるため、インデックスを追加しても意味がありません。したがって、インデックスとインクルードに関する上記のテキストは無関係です

于 2012-06-26T07:05:52.350 に答える