LEFT OUTER JOIN [INVENTTRANS]
ON #TEMP.VOUCHERPHYSICAL=[INVENTTRANS].VOUCHERPHYSICAL
WHERE [INVENTTRANS].ITEMID = #Temp.INVENTDIMID
这为我提供了几乎所有我想要的结果。大约1/4的期望结果被消除,因为INVENTDIMID
在某些情况下附加了后缀。
在类似于此意图的like子句中成功的正确语法是什么。
WHERE '[INVENTTRANS].ITEMID%' like #Temp.INVENTDIMID
或者,如果没有简单的方法可以做到这一点,那么最有效的方法是什么。
由于
答案 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 + '%'