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

这几乎为我提供了我正在寻找的结果。INVENTDIMID由于在某些情况下附加了后缀,因此消除了大约 1/4 的所需结果。

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

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

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

谢谢

4

1 回答 1

4

我不确定我是否完全理解了这个问题,但您似乎想将谓词应用于类似的陈述,该陈述比较固定的而不是您提供的文本中的其他内容。

我总是做这样的事情:

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

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

2013 年 5 月 21 日更新

两个表变量的简单示例,它们自行填充并在第二个表变量上使用通配符匹配。代码将在 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 + '%'
于 2013-05-16T19:22:33.630 回答