sqlserversql函数运行失败,找不到原因

image.pngdeclare @S VARCHAR(1000)

declare @ssum VARCHAR

   set @ssum=0.0

   set @S='招待蓝德堡胶水二人花132元.'

   set @S=replace('招待蓝德堡胶水二人花132元.','\','')

   set @S=replace('招待蓝德堡胶水二人花132元.','\\','')

   WHILE PATINDEX('%[^0-9\\.\\^0-9]%',@S)>0

begin

    IF PATINDEX('%[^0-9\\.\\^0-9]%',@S) = 1

    BEGIN

      SET @S = STUFF(@S,PATINDEX('%[^0-9\\.\\^0-9]%',@S), 1, '');

    END

    else

    BEGIN

      SET @ssum=cast(@ssum as numeric(18,2))+cast(substring(@S,0,PATINDEX('%[^0-9\\.\\^0-9]%',@S)) as numeric(18,2))

      set @S=substring(@S,PATINDEX('%[^0-9\\.\\^0-9]%', @S),len(@S))

    END

end

SQL xiaxiang1 发布于 4 天前
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
lxy2Lv6中级互助
发布于4 天前

declare @ssum float--声明@ssum改成这个

最佳回答
0
用户k6280494Lv6资深互助
发布于4 天前

numeric字段长度不够吧

最佳回答
0
snrtuemcLv8专家互助
发布于4 天前

报错是数值转字符超出字符长度

你看看那个vachar字符设置断了,最不济,都改成varchar(4000)

  • 4关注人数
  • 78浏览人数
  • 最后回答于:4 天前
    请选择关闭问题的原因
    确定 取消
    返回顶部