使用存储过程在 "In" 子句中传递多个值时查询不返回数据

Query not returning data while multiple values passing in "In" Clause using stored procedure

这是我的代码:

declare @data nvarchar(max) = 'AA1,AA2,AA3'
set @data = replace(@data, ',', ''',''')
set @data = ' ''' + @data + ''' '

select @data

select * 
from tbl_Member 
where memberName in (@data)

我正在发送 'AA1,AA2,AA3' 给 @data,它 returns 'AA1','AA2','AA3'

IN 子句中使用返回数据时,我没有从 table.

获取数据

请帮助我,在此先感谢。

试试这个

declare @data nvarchar(max) = 'AA1,AA2,AA3'
set @data = replace(@data, ',', ''',''')
set @data = ' ''' + @data + ''' '
DECLARE @query varchar(1024)
set @query = 'select * from tbl_Member where memberName in (' + @data + ')';
exec(@query)

我理解为什么您会认为这行得通,但解析器不会将您的语法读取为该文字。你应该在这里使用 table 参数,你可以避免动态 sql.

declare @data table(datas varchar(16))
insert into @data
values
('AA1'),
('AA2'),
('AA3')



declare @tbl_Member table (memberName varchar(64))
insert into @tbl_Member

values
('AA1'),
('AA2'),
('AA3'),
('AA4')

select * 
from @tbl_Member 
where memberName in (select * from @data)

试试这个。

declare @data nvarchar(max) = 'AA1,AA2,AA3'
set @data = replace(@data, ',', ''',''')
set @data = ' ''' + @data + ''' '

select @data

EXEC('
select * 
from tbl_Member 
where memberName in ('+@data+')')