在JOIN查询中使用LIKE

时间:2014-12-18 15:50:24

标签: sql join left-join sql-like

我有两个独立的数据表。

这是Table1

Customer Name  Address 1       City     State  Zip
ACME COMPANY   1 Street Road   Maspeth  NY     11777

这是Table2

Customer   Active Account   New Contact
ACME       Y                John Smith

我正在使用JOIN运行查询,其中仅包含两个表中的联接字段相等的行

我从[{1}}加入Customer Name,从Table1加入Customer。显然没有比赛。我要做的是显示每个表中前4个字符匹配的结果,以便得到结果或匹配。这可以使用Table2LIKE吗?

4 个答案:

答案 0 :(得分:2)

似乎这应该有效:

Select *
From Table1, Table2 
Where Table1.CustomerName Like Cat('%',Trim(Table2.CustomerName),'%')

答案 1 :(得分:2)

可能是这样,但这可能取决于您使用的数据库。例如,在Microsoft SQL中,它可以使用这样的东西:

SELECT *
FROM [Table1] INNER JOIN [Table2]
ON LEFT([Table1].[Customer Name],4) = LEFT([Table2].[Customer],4)

如果使用其他RDBMS,语法可能会有所不同。你在尝试什么?

答案 2 :(得分:1)

是的,这是可能的。 但我怀疑,表2中的每个名字只有4个字母,所以这里是一个解决方案,其中table2中的名称是table1中名称的开头。

使用%来控制字符串。它是"任何或不需要的占位符/通配符"。

SELECT
*
FROM
Table1
INNER JOIN Table2 ON Table1.CustomerName LIKE CONCAT(Table2.Customer, '%');

串联字符串在DBMS之间可能会有所不同。

答案 3 :(得分:0)

如果您只想匹配前四个字符,可以使用以下字符:

SELECT --your columns
FROM Table1 T1
JOIN Table T2
ON
SUBSTRING ( T1.CustomerName ,1, 4) = SUBSTRING ( T2.Customer ,1, 4)