2017-07-25 23 views
1

Where句で使用するために、カンマ区切り文字列を整数配列(整数[])に変換しようとしています。Postgresでコンマ区切り文字列を整数配列に変換する

キャストを試しましたが、::Intが動作しませんでした。

例ご入力

Table A | Table B 
ID  | Set_id 
2   | 14,16,17 
1   | 15,19,20 
3   | 21 

私のクエリに感謝:

Select * 
from Table a, table b 
where a.id in b.set_id 
+0

これは恐ろしいです設計。どうしてそれをするの? –

答えて

0
Select * from Table_a a, table_b b 
where a.id = any(regexp_split_to_array(b.set_id,',')::int[]); 
+0

ありがとう、その作品 – sam

6

あなたが参加条件のためにそれを使用したい場合は、適切な整数配列に文字列を変換する必要があります。

Select * 
from Table a 
    join table b on a.id = any(string_to_array(b.set_id, ',')::int[]); 

しかしずっとよりよい解決策は適切に(整数配列ではなく、varchar型の列にまたは少なくとも店舗これらのIDを)あなたのテーブル正規化するだろう

+0

ありがとう非常に多くの作品 – sam

+0

これは、一部の生データが "1,23,456"というファイルに保存されている場合に発生する可能性があります。ストレージの使用量を減らし、パフォーマンスを向上させるには、それらを整数の配列に変換する必要があります。 –

関連する問題