使用存储过程在 "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+')')
这是我的代码:
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+')')