2017-04-03 4 views
3

ハードコードされた値を1つの列で選択する必要があるため、Informix DBのテーブルとそれらを結合できます。 Informix DBでハードコードされた値を選択

select a from (values (1), (2), (3)) ; 

そして、私は結果を得ることを期待:だから私はこのような何かを行うにはさまざまなバリエーションにしてみてください

1 
2 
3 

私は他のDBでこれを考えたり、私が試した他のいくつかのバリエーションが値を返します。ただし、Informixでは動作しません。

誰でもInformixで動作するソリューションをお勧めしますか?

答えて

3

Informixでは実際のクエリ文が必要です。私はこれがうまくいくと思う:

select a 
from (select 1 as a from systables where tabid = 1 union all 
     select 2 as a from systables where tabid = 1 union all 
     select 3 as a from systables where tabid = 1 
    ) t; 
3

何がGordon Linoffsuggestsは確かに動作しますが、Informixの固有の構文を使用して、利用可能な、よりコンパクトな表記もあります。例えば

SELECT a 
    FROM TABLE(SET{1, 2, 3}) AS t(a) 

これは非常に喜んで(と簡潔に)整数のリストを生成します。 SETの代わりにLISTまたはMULTISETを使用できます。 MULTISETは、SETとは異なり、繰り返し要素を持つことができます。 LISTは順序を保持し、リピートを許可します。

非常に多くの場合、単純な値で保存されていない注文は、リスト内のほんの一部です。 SETまたはMULTISETの順序は保証されていません。ご注文が問題になる場合は、LISTを使用してください。

この情報は、IBM Informix 12.10マニュアルCollection Constructorsにあります。いいえ、あなたがそれに到達する方法は明白ではありません。私はSELECTで始まり、次にFROMで始まり、 'コレクション変数から選択する'から '式'に進みます。私は数秒かけてそれをじっと見て、次に「コンストラクタ式」とそれゆえ「コレクションコンストラクタ」を見ました。

関連する問題