我试图将逗号分隔的字符串转换为整数数组(整数[])以在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
我试图将逗号分隔的字符串转换为整数数组(整数[])以在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
Select * from Table_a a, table_b b
where a.id = any(regexp_split_to_array(b.set_id,',')::int[]);
谢谢,它的作品 – sam
您需要将字符串转换为适当的整数数组,如果你想使用的连接条件。
Select *
from Table a
join table b on a.id = any(string_to_array(b.set_id, ',')::int[]);
但多更好的解决办法是正确正常化你的表(或至少存储这些ID与整数数组,而不是VARCHAR列)
非常感谢你的作品 – sam
当某些原始数据在某些文件中被存储为“1,23,456”时,可能会发生这种情况。您必须将它们转换为整数数组,以获得更少的存储使用和更好的性能。 –
这是一个可怕的设计。你为什么这样做? –