InformixのSQLケースステートメント - ケースブロックの最後のセクションに複数のフィールドを設定できますか?
-
09-10-2019 - |
質問
IBM Informix Dynamic Serverバージョン10.00.FC9を使用します
複数のフィールド値を1つで設定したいと考えています CASE
ブロック。これは可能ですか?各フィールドセットの同じ条件を再評価する必要がありますか?
私はこれらの線に沿って何かを考えていました:
SELECT CASE WHEN p.id = 9238 THEN ('string',3) END (varchar_field, int_field);
どこ THEN
セクションは、の構文と同様のフィールドの「配列」を定義します
INSERT INTO table (field1,field2) values (value1,value2)
また、aで実行できますか CASE
のブロック UPDATE
声明?
UPDATE TABLE SET (field1,field2) = CASE WHEN p.id=9238 THEN (value1,value2) END;
解決
通常、私はあなたが使用している情報のバージョンを尋ねますが、今回はおそらくそれほど重要ではありません。簡単な答えは「いいえ」です。
より複雑な答えは、行タイプコンストラクターを使用して議論するかもしれませんが、それはおそらくあなたが出力で望むものではありません。そして、前述のことを考えると、更新は機能しません(そして、それが進む場合は余分なレベルの括弧が必要になります)。
他のヒント
いや CASE
ステートメントは式に解決します(参照してください SQLへのIBM Informixガイド:構文ケース式)そして、式が許可されている場所で使用できます。式は単一の値です。
から http://en.wikipedia.org/wiki/expression_%28programming%29
an 表現 プログラミング言語では、明示的な値、定数、変数、演算子、および関数の組み合わせがあります。これらは、特定の優先順位のルールと特定のプログラミング言語の関連付けに従って解釈されます。 )別の値。
ここにある簡単な方法を見つけました:行のデータに基づいて変更するlistView行の色を持つ方法
解決策は、SQLステートメントにケースステートメントを追加するだけでした。私の人生をずっと楽にメイドしてください。