我有两张table:区域的imd公司区域包含一个位置列,其中包含有关英国城市的信息。imd表包含一列“name”,其中还包含城市名称。我想根据位置和名称联接这两个表,但在区域表中,位置还包括国家名称,而imd表只包含城市名称。我想连接基于部分字符串匹配的表我已经尝试了以下代码,但它不起作用。
SELECT * FROM s.regional, s.imd WHERE s.regional.location like concat('%',s.imd.Name)
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等列,并创建对该表的引用(外键)。它将使将来维护(插入/更新/删除)您的表变得容易。
1条答案
按热度按时间bakd9h0s1#
您可以将[regional]表中[location]字段的第一部分置于逗号之前,并将其连接到[imb]表中的[name]列,如下所示:
理想情况下,您应该将[location]字段移到它自己的表中,在该表中可以有诸如city、country等列,并创建对该表的引用(外键)。它将使将来维护(插入/更新/删除)您的表变得容易。