我正在尝试根据匹配的邮政编码将数据库中的两个表连接起来,但是却在与单个数据行相关的多个邮政编码处苦苦挣扎。
即表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'
我曾经尝试使用'%'|| ||'%'
和其他各种功能,但说实话有点茫然。
如果有人可以帮助,那就太好了! 谢谢
答案 0 :(得分:0)
您可以加入:
',' || 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']
答案 1 :(得分:0)
嗯,我从未使用ON和LIKE来加入两个表。无论如何,请查找STRPOS命令。
可能是这样的: ... 或(STRPOS(t1.postcodes,t2.postcode)> 0) ...