如何根据此逗号分隔的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
答案 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_array
,unnest
和regexp_split_to_table
。