PostgreSQL中如何使用数组列作为文本列的查询条件?
PostgreSQL数组匹配查询的正确写法
你的问题出在混用了IN和ANY,PostgreSQL不支持这种语法。以下是两种可行的修正方案:
方案一:直接使用= ANY匹配数组元素
去掉多余的IN,用= ANY直接匹配子查询返回的数组中的任意元素:
select * from tax_role where tax_role_2021.address_num = ANY (SELECT string_to_array(corporate_data.address_num, '-') FROM corporate_data where lower(corporate_data.name) LIKE '%some_name%');
方案二:将数组展开为行后用IN匹配
用unnest()函数把数组拆成单个值的行,再用IN进行匹配:
select * from tax_role where tax_role_2021.address_num IN (SELECT unnest(string_to_array(corporate_data.address_num, '-')) FROM corporate_data where lower(corporate_data.name) LIKE '%some_name%');
两种方法都能实现你要的效果:从corporate_data中拆分出地址编号数组,匹配tax_role表中的单个地址编号。
内容的提问来源于stack exchange,提问作者DouxDoux
相关产品推荐
相关产品推荐

