PostgreSQL:如何将查询返回的单行文本用于另一查询?
解决方案
你可以通过子查询嵌套或CTE公共表达式的方式,直接将第一个查询的结果传入string_to_array函数,无需手动复制字符串。以下是几种可行的写法:
方法一:直接子查询嵌套
这是最简洁的方式,由于你的第一个查询仅返回一行结果,可直接将其作为string_to_array的第一个参数:
SELECT unnest( string_to_array((SELECT value FROM some_table_name WHERE key='some_key'), ',') ) AS parts;
方法二:使用CTE公共表达式
如果后续需要重复使用该逗号分隔的字符串结果,用CTE能让逻辑更清晰:
WITH comma_separated_data AS ( SELECT value FROM some_table_name WHERE key='some_key' ) SELECT unnest(string_to_array(value, ',')) AS parts FROM comma_separated_data;
方法三:添加LIMIT确保单行结果(可选)
若不确定查询是否可能返回多行(哪怕当前场景不会),可加上LIMIT 1避免报错:
SELECT unnest( string_to_array((SELECT value FROM some_table_name WHERE key='some_key' LIMIT 1), ',') ) AS parts;
以上写法最终都会输出拆分后的单个元素:
parts ------ apple banana orange
内容的提问来源于stack exchange,提问作者Shalahuddin Al-Ayyubbi
相关产品推荐
相关产品推荐

