2016-12-03 6 views
0

私は、データ型がenum型のPostgresqlにテーブル列を持っています。今私はテーブルからデータを選択するために以下のようなクエリを使用しています。PostgreSQLでWHERE句で渡すべき列挙型の型のすべての型を選択するには?

SELECT ................. FROM ............ WHERE transaction = ?::operations.transactions; 

私はこのクエリをJAVAのPreparedStatementオブジェクトに渡しています。それはsetStringメソッドのPreparedStatementのパラメータとしてenum型のいずれかを渡すと正常に動作します。

今、私はそれを聞いてみたいが、私はResultSet内のすべてのenum型を得ることができるようにPreparedStatementsetString方法にパラメータとして文字列を送信することが可能ですか?

このステートメントでは不可能な場合は、希望の結果を得るためにどのようにクエリを変更できますか?または、希望の結果を得るために使用できる他の戦略ですか?

+2

where句を削除するだけです。 –

+0

しかし、私は、必須である列挙型に基づいてフィルタリングすることができません。 – Blip

+1

すべてのユースケースを単一のクエリで実装することはできません。列挙型のフィルタリングは、ユースケースの1つで、1つのクエリで実装されます。まったくフィルタリングせず、すべてを取得することは別のユースケースであり、別のクエリを使用して実装されます。 –

答えて

1

any(array expression)を使用できます。例:

create type color as enum('white', 'blue', 'green'); 

with the_data(a_color) as (
    values ('white'::color), ('blue'), ('green') 
) 

select * 
from the_data 
where a_color = any(array['white', 'blue']::color[]); 
+0

これは私の問題を解決する素敵な方法です。 1つの型が必要な場合は、配列に1つの型だけを渡すことができます。すべての型を渡す必要がある場合は、配列内のすべての型を渡します。 – Blip

関連する問題