SQL in查询报告类型转换失败的3种解决办法

       
     -- in查询 nvarchar转int 错误 (NodeId 为 int 类型)
     DECLARE @NodeNum NVARCHAR(200) = '3,5,6,' 
     DECLARE @FlowNumber NVARCHAR(50)= '201309240001'
        
     SELECT ID ,
            NodeName
     FROM   WF_WorkFlowNode
     WHERE  NodeId IN ( @NodeNum + '0' )
            AND FlowNumber = ' + @FlowNumber + '
     ORDER BY id DESC


--解决方法 --1、执行T-SQL语句 DECLARE @sql NVARCHAR(300)= ' SELECT ID , NodeName FROM WF_WorkFlowNode WHERE NodeId IN (' + @NodeNum + '0) AND FlowNumber =''' + @FlowNumber + ''' ORDER BY id DESC' --PRINT @sql EXEC( @sql) --2、charindex函数 SELECT ID , NodeName FROM WF_WorkFlowNode WHERE CHARINDEX(',' + CAST(NodeId AS NVARCHAR(10)) + ',', ',' + @NodeNum + '0,') > 0 AND FlowNumber = '' + @FlowNumber + '' ORDER BY id DESC -- 3、while循环取出单个值(update可以这么干,但是select则会出现多个表) --SELECT SUBSTRING('123',1,2)--下标从1计算 --SELECT CHARINDEX('2','123123123',4) DECLARE @ids NVARCHAR(200)= @NodeNum , @iditem NVARCHAR(10) WHILE ( CHARINDEX(',', @ids) > 0 ) BEGIN SET @iditem = SUBSTRING(@ids, 1, CHARINDEX(',', @ids) - 1) SET @ids = SUBSTRING(@ids, CHARINDEX(',', @ids) + 1, LEN(@ids)) PRINT @iditem + '>' + @ids SELECT ID , NodeName FROM WF_WorkFlowNode WHERE NodeId = @iditem AND FlowNumber = '' + @FlowNumber + '' END

 

转载于:https://www.cnblogs.com/gagarinwjj/p/3336993.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值