[英]use % wildcard with ' in ' operator in sql server
我有一個存儲過程,我傳遞一個逗號分隔值列表@ At1
Create spGetProducts @At1 VARCHAR(200)
begin
select * from tblProducts where Category1 IN (SELECT * FROM CSVToTable(@At2))
end
函數CSVToTable基本上采用逗號分隔值並將它們放在表中。
問題是我想在IN運算符中使用LIKE通配符,但這不起作用。
因此,如果我在一行中排序Class1進行測試並且CSVTOTABLE將返回值'es',那么它將選擇該行,就像我有%es%。 基本上我只想在使用in運算符時在逗號分隔值中包含百分號。
即時通訊使用sql server 2012
編輯
我的CSVTABLE返回一個列表,每行都有逗號分隔值。
將IN
重寫為更通用的EXISTS
:
select *
from tblProducts p
where exists (
select *
from CSVToTable(@At2)
where Category1 LIKE (SomeExpressionInvolvingTheResultFromCSV)
)
出於緩存原因,您可能希望首先將CSVToTable
的結果拉入表變量或臨時表中。
用JOIN ON替換IN
select distinct t.* from tblProducts t
inner join CSVToTable(@At2) f
on t.category1 like f.field1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.