6

これは簡単な質問です。in 句の使用に関する詳細を読みましCASEWHEREが、使用方法を明確に理解できませんでした。以下は私のサンプルクエリです:

1    SELECT * FROM dual
2    WHERE (1 =1)
3     AND (SYSDATE+1 > SYSDATE)
4     AND (30 > 40)
5     AND (25 < 35);

パラメータのような手順i_valueがあります。i_value が「S」の場合は 4 行目を無視し、i_value が「T」の場合は 5 行目を無視する必要があります。

前もって感謝します。

4

4 に答える 4

2
 SELECT * FROM dual
 WHERE (1 =1)
 AND (SYSDATE+1 > SYSDATE)
 AND CASE WHEN i_value = 'S' THEN 1 ELSE CASE WHEN (30 > 40) THEN 1 ELSE 0 END END = 1
 AND CASE WHEN i_value = 'T' THEN 1 ELSE CASE WHEN (25 < 35) THEN 1 ELSE 0 END END = 1;
于 2013-07-11T04:24:28.833 に答える
2

なぜそんなに使用するのcaseですか?

 SELECT * FROM dual
  WHERE (1 =1)
    AND ( SYSDATE+1 > SYSDATE )
    AND ( ((30 > 40) and i_value <> 'S') or i_value = 'S' )
    AND ( ((25 < 35) and i_value <> 'T') or i_value = 'T' );
于 2013-07-11T06:25:05.470 に答える
-1

これもうまくいくはずです。

case
  when (i_value = 'S' and (WHERE (1=1) AND (SYSDATE+1 > SYSDATE) AND (25 < 35)) ) then 1
  when (i_value = 'T' and (WHERE (1=1) AND (SYSDATE+1 > SYSDATE) AND (30 < 40)) ) then 1
  else 0
end = 1
于 2014-06-05T16:02:33.580 に答える