0

私がこのクエリを持っているとしましょう、

SELECT T.A FROM T WHERE T.A IN (CASE WHEN T.B = 1 THEN (1,2,3) ELSE (4,5) END)

このクエリは可能ですか、それとも代替手段ですか。

4

3 に答える 3

5

where句でユースケースを使用しないでください

SELECT T.A FROM T WHERE (T.A IN (1,2,3) And T.B = 1) or (T.A in (4,5) and T.B <>1) 
于 2012-06-20T06:28:48.467 に答える
3

CASEです-明確に定義された型の単一の結果を返します。

条件のリストを評価し、複数の可能な結果式の1つを返します。

一部の複雑なWHERE句では、それを使用するのが理にかなっている場合があります(@Somebodyが問題の答えを示しているため、現在の句はなくても解決できます)が、単一の結果値または式を返すように構造化する必要があります。

SELECT T.A FROM T WHERE
  1 = CASE
         WHEN T.B = 1 AND T.A IN (1,2,3) THEN 1
         WHEN T.A IN (4,5) THEN 1
      END
于 2012-06-20T06:35:35.060 に答える
2
SELECT T.A 
FROM T 
WHERE  T.B = 1      AND  T.A IN (1,2,3)  
   OR  T.B <> 1     AND  T.A IN (4,5) 
   OR  T.B IS NULL  AND  T.A IN (4,5) ;
于 2012-06-20T06:34:41.500 に答える