读书人

在用select.where XXX in(变量)时遇

发布时间: 2012-01-11 22:28:46 作者: rapoo

在用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+ ') ')

读书人网 >SQL Server

热点推荐