SQL包含表列

时间:2014-02-17 09:49:32

标签: sql database ms-access contains sql-like

我在数据库中有两个表。两者都有名为“公司名称”的列。 我希望在这些列之间比较它们名称中的任何相似之处。

例如:Table1.CompanyName = 2i Ltd /// Table2.CompanyName = 2i Limited.

2 个答案:

答案 0 :(得分:1)

我想你的意思是:如何将这些加在一起并比较相等或模糊的东西。

你可以使用允许模糊匹配的Oracle Text这样做:

select  t1.CompanyName
from    Table1 t1
join    Table2 t2
on      contains(t1.CompanyName, t2.CompanyName) > 0

在Access中有可能,但你必须自己编写。查看this article(要粘贴的代码)。

答案 1 :(得分:0)

让我们创建两个样本表来准备我们的数据

CREATE TABLE #Table1 (CompanyName VARCHAR(35))
CREATE TABLE #Table2 (CompanyName VARCHAR(35))
GO
INSERT INTO #Table1 (CompanyName)
SELECT '2i Ltd'
UNION ALL
SELECT 'Xyz Ltd'
UNION ALL
SELECT 'Abc Inc'
GO
INSERT INTO #Table2 (CompanyName)
SELECT '2i Limited'
UNION ALL
SELECT 'Xyz Lmtd'
UNION ALL
SELECT 'ZZZ Corp'

部分匹配SELECT查询(我使用 LEFT 4个字符在表1中找到类似的公司名称。

SELECT 
        t1.CompanyName,
        t2.CompanyName

FROM #Table1 t1
JOIN #Table2 t2
ON t1.CompanyName LIKE '%' + LEFT(t2.CompanyName, 4) + '%'