0

私はCASE&DECODEを扱っています。CASE の構文は次のとおりです。

CASE  [ expression ]
  WHEN condition_1 THEN result_1
  WHEN condition_2 THEN result_2
  ...
  WHEN condition_n THEN result_n
  ELSE result
END

CASE で条件を記述する場合は、WHEN...THEN を使用して記述できます。

では、WHEN... THEN 条件を 1 つの CASE に何回記述できるか教えてください。WHEN....THEN条件を1つのCASEに書き込むための制限です。

お返事をありがとうございます。実際、私は私の質問の答えを得ました。私は私の質問の答えを得ました。

実際には、1 つの CASE で 255 の比較しか記述できません。各 WHEN...THEN 句は 2 つの比較と見なされます。

1 つの CASE ステートメントで 255 の比較を記述できます。各 WHEN...THEN 句は 2 つの比較と見なされます。

デコードにも同じ制限が適用されます。

DECODE 関数の引数の最大数は 255 です。これには、EXPRESSION、SEARCH、および RESULT 引数が含まれます。

4

2 に答える 2

7

http://docs.oracle.com/cd/E11882_01/server.112/e41084/expressions004.htm#SQLRF20037の11.2マニュアルから

CASE 式の引数の最大数は 65535です。単純な CASE 式の最初の式とオプションの ELSE 式を含め、すべての式がこの制限にカウントされます。各 WHEN ... THEN ペアは 2 つの引数としてカウントされます。この制限を超えないようにするために、CASE 式をネストして、return_expr 自体が CASE 式になるようにすることができます。

(私のものを強調)

編集
11.1 および 10.2 のマニュアルでは制限が 255 として文書化されているため、明らかにこの制限は 11.2 で大幅に引き上げられました。

http://docs.oracle.com/cd/B19306_01/server.102/b14200/expressions004.htm#i1033392
http://docs.oracle.com/cd/B28359_01/server.111/b28286/expressions004.htm#i1033392

于 2012-05-02T07:20:48.007 に答える
-1

これに制限はありません。やりたいことはいくらでもできます...しかし、あなたの目標/アプローチは何ですか? モデルに問題がある場合は、このような大きなケースを解決する必要があると思います。

于 2012-05-02T06:42:23.377 に答える