基于部分字符串sql的联接表

时间:2020-08-04 16:17:49

标签: sql join left-join pgadmin-4

我有两个表:

区域

enter image description here

imd

enter image description here

区域包含一个位置栏,其中包含有关英国城市的信息。 imd表包含“名称”列,其中还包括城市名称。

我想根据位置和名称将两个表连接起来,但是在区域表中,该位置还包括国家/地区名称,而imd表仅包含城市名称。我想基于部分字符串匹配来联接表 我已经尝试了以下代码,但无法正常工作。

SELECT *
FROM s.regional, s.imd
WHERE s.regional.location like concat('%',s.imd.Name)

1 个答案:

答案 0 :(得分:0)

您可以将[区域]表中[位置]字段的第一部分放在逗号之前,并将其连接到[imb]表中的[名称]列,如下所示:

SELECT a.*,b.*
FROM s.regional a LEFT JOIN s.imb b ON SPLIT_PART(a.location, ',', 1)  = b.[name]

理想情况下,您应该将[location]字段移到它自己的表中,在其中可以有诸如city,Country等的列,并创建对该表的引用(外键)。将来可以轻松维护(插入/更新/删除)您的表。

相关问题