基于部分字符串连接表 sql

join tables based on partial string sql

我有两个 table:

区域

imd

区域包含一个位置列,其中包含有关英国城市的信息。 imd table 包含一列 'Name',其中还包括城市名称。

我想根据位置和名称加入两个 table,但在区域 table 中,位置还包括国家名称,而 imd table 仅包含城市姓名。我想根据部分字符串匹配加入 tables 我尝试了以下代码,但它不起作用。

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

您可以将 [regional] table 中 [location] 字段的第一部分放在逗号之前,并将其连接到 [imb] table 中的 [name] 列,例如这个:

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

理想情况下,您应该将 [location] 字段移动到它自己的 table 中,您可以在其中包含城市、国家/地区等列,并创建对该 table (外键)的引用。这将使您将来 table 的维护(Insert/Update/Delete)变得容易。