データベースと比較する必要がある値のコンマ区切りリストを渡しています
渡す値の例を次に示します。
@orgList = "1123, 223%, 54%"
ワイルドカードを使用するには、私がしなければならないと思いますLIKE
が、クエリは長時間実行され、14 行しか返されません (結果は正しいですが、おそらく結合を間違って使用しているため、永遠にかかっています)
改善できますか?
これは私が今していることです:
declare @tempTable Table (SearchOrg nvarchar(max) )
insert into @tempTable
select * from dbo.udf_split(@orgList) as split
-- this splits the values at the comma and puts them in a temp table
-- then I do a join on the main table and the temp table to do a like on it....
-- but I think it's not right because it's too long.
select something
from maintable gt
join @tempTable tt on gt.org like tt.SearchOrg
where
AYEAR= ISNULL(@year, ayear)
and (AYEAR >= ISNULL(@yearR1, ayear) and ayear <= ISNULL(@yearr2, ayear))
and adate = ISNULL(@Date, adate)
and (adate >= ISNULL(@dateR1, adate) and adate <= ISNULL(@DateR2 , adate))
最終結果は、maintable.org
が 1123 であるか、223 で始まるか、または 554 で始まるすべての行になります。
私の日付の狂気の理由は、ストアドプロシージャが年、年の範囲、特定の日付、および日付の範囲のみをチェックする場合があるためです...使用されていないものはすべて null として渡されます。
多分問題はそこにありますか?