日期:2014-05-16  浏览次数:20387 次

求看一条exec sp_executesql 语句
exec sp_executesql N'SELECT *
FROM VWorkFlowNodes
WHERE (NodeSerils in(@1))',N'@1 nvarchar(4000)',
@1=N'2,5'
编辑得过,查不出结果
exec sp_executesql N'SELECT *
FROM VWorkFlowNodes
WHERE (NodeSerils in(2,5))'
正常查询
exec sp_executesql N'SELECT *
FROM VWorkFlowNodes
WHERE (NodeSerils in(@1))',N'@1 nvarchar(4000)',
@1=N'2'
正常查询

求解决办法

------解决方案--------------------
之所以有问题,是因为:

exec sp_executesql N'SELECT *
FROM VWorkFlowNodes
WHERE (NodeSerils in(@1))',N'@1 nvarchar(4000)',
@1=N'2,5'

这个语句相当于:

declare @t nvarchar(4000)
set @t = N'2,5'

SELECT *
FROM VWorkFlowNodes
WHERE (NodeSerils in(@1))

这样虽然不报错,但是相当于:

SELECT *
FROM VWorkFlowNodes
WHERE NodeSerils =N'2,5'

所以查询不出结果
------解决方案--------------------
SELECT * FROM VWorkFlowNodes WHERE charindex(','+NodeSerils+',',',2,5,')>0
 这样呢?有结果不?