PSQL选择逗号分隔的结果进入连接

时间:2014-09-19 00:26:28

标签: sql postgresql comma delimited-text

如何根据此逗号分隔的key_list中列出的key_id来返回key_results?

SELECT key_list FROM some.place where key_number=1234;
   key_list
----------------
{32,35,58,63,89}

SELECT key_id, key_result FROM some.otherplace;
   key_id   |   key_result
--------------------------
32   |   frisbee
33   |   duckhunt
34   |   hairplugs
35   |   sparkplugs

1 个答案:

答案 0 :(得分:1)

因为您的字符串是有效的PostgreSQL数组文字,所以您可以将其用作= ANY的输入,并使用强制转换为integer[]

SELECT o.key_id, o.key_result 
FROM some.otherplace o
INNER JOIN some.place p ON (o.key_id = ANY (key_list::integer[]))

但实际上......这是糟糕的架构设计。为什么,请参阅this post。至少你应该存储一个实际的数组。

处理逗号分隔值时,其他有用的工具是string_to_arrayunnestregexp_split_to_table