在用select...where XXX in(变量),时遇到郁闷的问题?_?
各位高手,小弟我遇到如下问题
DECLARE @a varchar(200)
SET @a= ' ' 'zidane1 ' ' , ' 'zedane2 ' ' '
select @a as '@a '
select NextUser from dbo.Spreader_List_Relation where Username in (@a)
--但如下直接使用又能检索出数据来
--select NextUser from dbo.Spreader_List_Relation where Username in ( 'zidane1 ', 'zedane2 ')
go
在数据库中有这些相关的数据,但为何用变量后就没检索出数据呢?
但如果SET @a= 'zidane1 '(单个的)这样又能检索出数据来?这该如何解决呢??_?
请帮帮我
------解决方案--------------------@a在查询语句中只是一个字符串,根本不是你想要得到的两个一逗号分隔开的字符串
程序可以这样写
DECLARE @a varchar(200)
DECLARE @sql varchar(4000)
SET @a= ' ' 'zidane1 ' ' , ' 'zedane2 ' ' '
select @a as '@a '
set @sql = 'select NextUser from dbo.Spreader_List_Relation where Username in ( '+@a+ ') '
exec(@sql)
------解决方案--------------------用动态SQL即可。
DECLARE @a varchar(200)
SET @a= ' ' 'zidane1 ' ' , ' 'zedane2 ' ' '
select @a as '@a '
exec ( 'select NextUser from dbo.Spreader_List_Relation where Username in ( ' + @a + ') '
------解决方案----------------------try
DECLARE @a varchar(200)
SET @a= ' ' 'zidane1 ' ' , ' 'zedane2 ' ' '
select @a as '@a '
exec( 'select NextUser from dbo.Spreader_List_Relation where Username in ( '+@a+ ') ')