簡體   English   中英

在sql server中使用%wildcard和'in'運算符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM