这是我的代码:
declare @data nvarchar(max) = 'AA1,AA2,AA3'
set @data = replace(@data, ',', ''',''')
set @data = ' ''' + @data + ''' '
select @data
select *
from tbl_Member
where memberName in (@data)
我正在向@data
发送'AA1,AA2,AA3',它返回'AA1','AA2','AA3'
在IN
子句中使用返回的数据时,我没有从表中获取数据。
请帮助我,谢谢。
答案 0 :(得分:0)
尝试
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)
答案 1 :(得分:0)
我了解您为什么会认为可行,但是解析器不会将您的语法读为该文字。您应该在此处使用表参数,并且可以避免使用动态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)
答案 2 :(得分:0)
尝试一下。
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+')')