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

t3irkdon  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(311)

我有两张table:
区域的

imd公司

区域包含一个位置列,其中包含有关英国城市的信息。imd表包含一列“name”,其中还包含城市名称。
我想根据位置和名称联接这两个表,但在区域表中,位置还包括国家名称,而imd表只包含城市名称。我想连接基于部分字符串匹配的表我已经尝试了以下代码,但它不起作用。

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

bakd9h0s1#

您可以将[regional]表中[location]字段的第一部分置于逗号之前,并将其连接到[imb]表中的[name]列,如下所示:

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

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

相关问题