2017-07-25 160 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[]); 

更好的解决办法是正确正常化你的表(或至少存储这些ID与整数数组,而不是VARCHAR列)

+0

非常感谢你的作品 – sam

+0

当某些原始数据在某些文件中被存储为“1,23,456”时,可能会发生这种情况。您必须将它们转换为整数数组,以获得更少的存储使用和更好的性能。 –

相关问题