在Postgres中将逗号分隔的字符串转换为整数数组

时间:2017-07-25 13:17:46

标签: sql postgresql

我正在尝试将逗号分隔的字符串转换为整数数组(integer [])以在Where子句中使用。

我试过演员,::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

3 个答案:

答案 0 :(得分:17)

如果要将其用于连接条件,则需要将字符串转换为正确的整数数组。

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

更多更好的解决方案是正确规范化表格(或至少将这些ID存储在整数数组中,而不是varchar列中)

答案 1 :(得分:2)

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

答案 2 :(得分:0)

您可以使用 unnest() 函数。 unnest 函数用于将数组扩展为一组行。
Select * from Table_a a, table_b b where a.id in (SELECT unnest(string_to_array(b.set_id, ',')::int[]));