【发布时间】:2013-12-31 16:36:14
【问题描述】:
我有一个存储过程,我将逗号分隔值列表作为@At1 传递
Create spGetProducts @At1 VARCHAR(200)
begin
select * from tblProducts where Category1 IN (SELECT * FROM CSVToTable(@At2))
end
CSVToTable 函数基本上采用逗号分隔的值并将它们放在一个表中。
问题是我想在 IN 运算符中使用 LIKE 通配符,但这不起作用。
因此,如果我在行 Category1 中有一个测试,并且 CSVTOTABLE 将返回一个值“es”,那么它将选择该行,就像我有 %es% 一样。 基本上我只想在使用 in 运算符时在逗号分隔值中有百分号。
我正在使用 sql server 2012
编辑
我的 CSVTABLE 返回一个列表,每一行都有一个逗号分隔值。
【问题讨论】:
-
你的函数是返回单行还是多行?
-
不要在IN子句中使用
*,只有exist子句可以使用。您需要选择一个值 -
@DarrenKopp 他的函数显然返回一个列表
-
建议避免为您的存储过程名称使用
sp前缀。阅读此处了解更多信息msdn.microsoft.com/en-us/library/dd172115(v=vs.100).aspx -
@M.Ali - There is no underscore there
标签: sql sql-server