InformixのSQLケースステートメント - ケースブロックの最後のセクションに複数のフィールドを設定できますか?

StackOverflow https://stackoverflow.com/questions/3971550

質問

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ステートメントにケースステートメントを追加するだけでした。私の人生をずっと楽にメイドしてください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top