PSQL将逗号分隔的结果选择到联接中
根据此逗号分隔的密钥列表中列出的密钥id,您将如何返回密钥结果PSQL将逗号分隔的结果选择到联接中,sql,postgresql,comma,delimited-text,Sql,Postgresql,Comma,Delimited Text,根据此逗号分隔的密钥列表中列出的密钥id,您将如何返回密钥结果 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 | frisb
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
因为您的字符串是有效的PostgreSQL数组文字,所以可以将其用作转换为整数[]的
=ANY
的输入:
SELECT o.key_id, o.key_result
FROM some.otherplace o
INNER JOIN some.place p ON (o.key_id = ANY (key_list::integer[]))
真的,尽管。。。这是糟糕的模式设计。至于原因,请参见。您至少应该存储一个实际数组
处理逗号分隔值时的其他有用工具有
string\u to_array
,unest
,以及regexp\u split\u to_table
,这只解决了一半问题。您应该将查询与加入@GordonLinoff一起放入,并在正确思考之前发布