前几天做干活时发现 了一个问题,
代码如下:
declare @userid nvarchar(10)
set @userid = '100001'
select [dbo].[f_GetUserList](@userid)
declare @aa nvarchar(400),@sql nvarchar(1000)
set @aa = [dbo].[f_GetRelationUserList_New](@userid)
print @aa
---SQL1:
set @sql ='
select * from userlist where
userid in (' + @aa + ')'
exec(@sql)
---SQL2:
select * from userlist where userid in (@aa)
奇怪的是第1个SQL可以正常出来数据,而第二个就不行
网上问了一下说是
---SQL1实际是:
select * from userlist where userid in (1,2,3,31)
---SQL2是:
select * from userlist where userid in ('1,2,3,31')
最后采用了将函数首先取到相应的值,并将函数值过滤出相要的数据,然后再加到sql里,而且还是用charindex去判断的
虽然问题暂时得到了解决,但是不知道 这样当数据量大的时候会不会反应比较慢。
先记下来,以备以后参考