日期:2014-05-19  浏览次数:20521 次

高手求救,一个SQL语句~~~~~~~~~~~~~
declare   @s   varchar(10)
declare   @t   varchar(100)
select   @s= ' ' '8032 ' ' '
select   @t= ' ' '3401 ' ', ' '3402 ' ' '

SELECT   TOP   10   *     from   INVTAA
                                  where   TAA002   =@s   and   TAA003   in(@t)

查询不出数据~~~~~~

而这个语句缺可以查询出数据
SELECT   TOP   10   *     from   INVTAA
                                  where   TAA002= '8032 '   and   TAA003   in( '3401 ', '3402 ')


请问是为什么呢?

------解决方案--------------------
declare @s varchar(10)
declare @t varchar(100)
select @s= ' ' '8032 ' ' '
select @t= ' ' '3401 ' ', ' '3402 ' ' '

EXEC( 'SELECT TOP 10 * from INVTAA where TAA002= '+@s+ ' and TAA003 in( '+@t+ ') ')
------解决方案--------------------
改用Charindex

declare @s varchar(10)
declare @t varchar(100)
select @s= '8032 '
select @t= '3401,3402 '

SELECT TOP 10 * from INVTAA
where TAA002 =@s and CharIndex(TAA003,@t) > 0
------解决方案--------------------
declare @s varchar(10)
declare @t varchar(100)
select @s= ' ' '8032 ' ' '
select @t= ' ' '3401 ' ', ' '3402 ' ' '

exec( '
SELECT TOP 10 * from INVTAA
where TAA002 = '+@s+ ' and TAA003 in( '+@t+ ') ')