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

これにより、私が探しているほぼ結果が得られます。必要な結果の約 1/4 が除外されるのINVENTDIMIDは、場合によってはサフィックスが付加されているためです。

このインテントに似た like 句で成功するための適切な構文は何ですか。

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

あるいは、これを行う簡単な方法がない場合、最も効果的な長い方法は何ですか.

ありがとう

4

1 に答える 1

4

質問を完全に理解しているかどうかはわかりませんが、指定したテキストではなく固定されているものを比較する like ステートメントに述語を適用したいようです。

私はいつも次のようなことをしています:

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

これは基本的に、関連付けようとしている列の両側にワイルドカードを適用することです。変数または列に対して機能します。

2013 年 5 月 21 日更新

2 番目のテーブル変数でワイルド カード マッチングを使用して自己設定し、機能する 2 つのテーブル変数の簡単な例。コードは、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 に答える