繁体   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