SQL Server 2012 不匹配联接查询

goo*_*yui -4 sql-server sql-server-2012

我必须为不匹配的记录生成查询输出。

假设我有两个表 Table1 和 Table2。两个表的列都为 DrugName。没有 ID 列。只是值列。

我必须通过过滤 Table2 中的 DrugNames 来从 Table1 生成输出。假设表 1 有 1000 条记录,表 2 有 100 条记录。在应用过滤器时,我应该从 Table1 中获得 900 条记录。

select * from Table1
left join Table2 on
Table1.DrugName = Table2.DrugName
where Table2.DrugName is null  
Run Code Online (Sandbox Code Playgroud)

以上语法返回不匹配的记录。

假设在 Table2.DrugName 中将是“ABCD”,而在 Table1.DrugName 中将是“XYZ ABCD”或“ABCD GHIJ”。如果 Table1.DrugName 有匹配的词“%ABCD%”,我必须过滤。

Rob*_*ley 6

Select * from Table1
Left Join Table2
on Table1.DrugName LIKE '%' + Table2.DrugName + '%' 
Run Code Online (Sandbox Code Playgroud)

...但请记住,性能可能很糟糕。您最好将较长的名称拆分为多个部分,然后加入 DrugNameElements 表。这样,您可以索引元素并快速识别匹配的元素。

  • 我认为它是指不完全匹配,而不是完全不匹配。他描述了一个是 VICKS,另一个是 ACTION VICKS 500。 (3认同)