基于部分字符串连接表 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)变得容易。
我有两个 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)变得容易。