You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于另一表的逗号分隔列表筛选行?PostgreSQL查询问题

解决方案

你的问题核心是没有将test表中逗号分隔的字符串拆分为单个值,导致之前的查询无法匹配classi表的单个分类值。以下是两种简便的PostgreSQL解决方案:

方案1:使用string_to_array转换为数组后匹配

SELECT * FROM classi
WHERE classification = ANY(SELECT string_to_array(b, ',') FROM test);

方案2:使用unnest拆分字符串为行后匹配

SELECT * FROM classi
WHERE classification IN (SELECT unnest(string_to_array(b, ',')) FROM test);

为什么之前的查询失败?

  • 第一个查询:子查询返回的是完整字符串'Apartment,Residential',IN判断的是classification等于这个完整字符串,自然匹配不到单个分类值。
  • 第二个查询:'{'||b||'}'只是生成了类似数组格式的字符串,并非PostgreSQL的真正数组类型,=ANY无法识别为数组元素进行匹配。

测试验证

运行上述任一查询,都会返回classi表中的Residential和Apartment两条记录,符合需求。

内容的提问来源于stack exchange,提问作者ziggy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 17:45:48