qq_27080737 2017-01-13 03:52 采纳率: 0%
浏览 3570
已结题

SQL 问题 传递给 LEFT 或 SUBSTRING 函数的长度参数无效。

--循环每行的id
declare @num int
--被拆的字段名
declare @dd nvarchar(50)
declare @ss nvarchar(50)
--接收值
declare @name nvarchar(50)
--要填充的列名
declare @bb nvarchar(50)
declare @ee nvarchar(50)
declare @cc nvarchar(50)
declare @ff nvarchar(50)
--给列名赋值.只需修改他们的值
set @bb='a'
set @ee='c'
set @cc='b'
set @ff='d'
set @dd='pp'
set @ss='aa'

set @num=1
while((select count(*) from test)>@num)
begin
select @name=@dd from test where id =@num

update test set
@dd=null,
@bb=(select SUBSTRING(SUBSTRING( @name,1,charindex('+',@name)),2,CHARINDEX('+',SUBSTRING( @name,1,charindex('+',@name)))-2)
from test where pp=@name),
@cc=(select substring(substring( @name,0,charindex('-',@name)),charindex('+',substring( @name,0,charindex('-',@name)))+1,20)
from test where pp=@name),
@ee=(select substring(substring( @name,CHARINDEX('-',@name)+2,20),CHARindex('-',substring( @name,CHARINDEX('-',@name)+1,20))+1,
CHARINDEX('+',substring( @name,CHARINDEX('-',@name)+2,20))-1)
from test where @dd=@name),
@ff=(select SUBSTRING( @name,charindex('+',@name,CHARINDEX('-',@name))+1,50) from test where @dd=@name)
where @dd=@name
set @num=@num+1
end

  • 写回答

1条回答

  • qq_27080737 2017-01-13 03:58
    关注

    id pp a b c d
    1 K100+200+300+400 NULL NULL NULL NULL
    2 K200+300+400+500 NULL NULL NULL NULL
    3 K300+400+500+600 NULL NULL NULL NULL
    NULL NULL NULL NULL NULL NULL

    需要将pp值 拆分为四个纯数字 录入到abcd 字段的时候报错,
    希望a,b,c,d的结果是 100 200 300 400

    评论

报告相同问题?

悬赏问题

  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?