我正在尝试根据匹配的邮政编码将两个表连接到数据库中,但是在与单行数据相关的多个邮政编码的情况下我很挣扎。
即表 1有 2 列(唯一 ID和邮政编码)。一条记录可能在此列中只有一个邮政编码,也可能有多个以逗号分隔形式的邮政编码。
表 2也有两列(开发描述和邮政编码)。在此表中,邮政编码列只能有一个邮政编码。
我想确定并加入表 2 中的邮政编码匹配或包含在表 1 中的相关列中的位置。我已经能够在每列中有一个邮政编码的地方这样做,但目前无法这样做表 1 中有多个邮政编码。
下面的代码带回了只有一个邮政编码的匹配项。
SELECT t1.id,
t1.postcodes,
t2.dev_description,
t2.postcode
FROM table1 AS t1
INNER JOIN table2 AS t2
ON t2.postcode LIKE t1.postcodes
WHERE t2.postcode = 'XXX XXX'
我尝试过使用'%'|| ||'%'
和其他各种功能,但老实说我有点不知所措。
如果有人可以提供帮助,那就太好了!谢谢
你可以加入:
',' || t1.postcodes || ',' like '%,' || t2.postcode || ',%'
这将扩展为:
',1234AB,2345AB,3456AB,' like '%,1234AB,%'
或者您可以使用string_to_array
和@>
包含运算符:
string_to_array(t1.postcodes, ',') @> array[t2.postcode]
这扩展为:
array['1234AB','2345AB','3456AB'] @> array['1234AB']
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句