查找两个表中匹配的列

时间:2011-10-16 18:32:45

标签: sql-server pattern-matching

我需要在第一个表中查询两个公司表是公司的全名,第二个表也是名称但不完整。想法是找到相似的字段。我把我正在使用的参考和SQL代码的图片放了。

我想要的结果是这样的

我发现最接近的方式:

SELECT DISTINCT 
    RTRIM(a.NombreEmpresaBD_A) as NombreReal, 
    b.EmpresaDB_B as NombreIncompleto 
FROM EmpresaDB_A a, EmpresaDB_B b 
WHERE a.NombreEmpresaBD_A LIKE 'VoIP%' AND b.EmpresaDB_B LIKE 'VoIP%'

上面代码的问题是它只返回WHERE中指定的记录,如果我把这个LIKE'%'它返回两个表的笛卡尔积。 RDBMS是Microsoft SQL Server。如果您帮助我提出任何建议的解决方案,我将不胜感激。

2 个答案:

答案 0 :(得分:0)

我建议在链接数据的表之间添加一个外键。然后你可以只搜索一个表并加入第二个表来获得其他结果。

答案 1 :(得分:0)

在LIKE表达式中使用短名称加上'%'作为参数:

使用我们处理SQL Server的信息进行编辑:

SELECT a.NombreEmpresaBD_A as NombreReal
      ,b.NombreEmpresaBD_B as NombreIncompleto 
FROM   EmpresaDB_A a, EmpresaDB_B b
WHERE  a.NombreEmpresaBD_A LIKE (b.NombreEmpresaBD_B + '%');

根据您的屏幕截图,您的列名称错误
带有+运算符的T-SQL中的字符串连接 上面的查询找到了

的情况
'Computex S.A' LIKE 'Computex%'

'Voip Service Mexico' LIKE 'VoipService%'

为此,您必须先剥离空白或使用更强大的模式匹配功能 我创建了一个demo for you on data.SE 查看pattern matchingLIKE operator in the manual