如何在JOIN的WHERE子句中将列名用作LIKE语句的一部分

时间:2013-05-16 18:06:25

标签: tsql sql-server-2008-r2 sql-like

LEFT OUTER JOIN [INVENTTRANS]
ON #TEMP.VOUCHERPHYSICAL=[INVENTTRANS].VOUCHERPHYSICAL
WHERE [INVENTTRANS].ITEMID = #Temp.INVENTDIMID

这为我提供了几乎所有我想要的结果。大约1/4的期望结果被消除,因为INVENTDIMID在某些情况下附加了后缀。

在类似于此意图的like子句中成功的正确语法是什么。

WHERE '[INVENTTRANS].ITEMID%' like #Temp.INVENTDIMID

或者,如果没有简单的方法可以做到这一点,那么最有效的方法是什么。

由于

1 个答案:

答案 0 :(得分:4)

我不确定我是否完全理解这个问题,但似乎您希望将谓词应用于类似的语句,该语句会比较其他修复的内容而不是您提供的文本。

我总是做这样的事情:

Where (ColumnName) like '%' + (OtherColumnName) + '%'

这基本上是在您尝试关联的列的任意一侧应用通配符。它适用于变量或列。

更新5-21-13

自填充的两个表变量的简单示例,并在第二个表变量上使用通配符匹配。代码将在SQL Management Studio中以SQL 2008或更高版本的形式运行:

declare @Person Table ( personID int identity, person varchar(8));

insert into @Person values ('Brett'),('Sean'),('Chad'),('Michael'),('Ray'),('Erik'),('Queyn');

declare @Match table ( Description varchar(4));

insert into @Match values ('B'), ('S'),('e')

Select top 100
    p.*
,   m.Description as 'MatchedOn'
from @Person p, @Match m
where p.person like '%' + m.Description + '%'