3

WHERE演算子を変更する句でcase ステートメントを実行できるかどうか疑問に思っていました。

私がやろうとしているのは、ブール値に基づいて結果を除外することです。

SELECT *
FROM table1
WHERE 
      CASE @Status
          WHEN 1 THEN Name LIKE 'SOMETHING%'
          WHEN 2 THEN Name NOT LIKE 'SOMETHING%'
      END

これが可能かどうか疑問に思っていましたか?

4

1 に答える 1

15

SWITCH次のように、式なしで実行できます。

SELECT *
FROM table1
WHERE
    (@Status = 1 AND Name LIKE 'SOMETHING%')
OR  (@Status = 2 AND Name NOT LIKE 'SOMETHING%')

@Statusは一度に 1 つのものにしか等しくないため、式の 1 つのコンポーネントだけが条件ORの結果を決定しWHEREます。

于 2013-06-03T01:28:35.253 に答える