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

利用某一列的值修改之后来更新其自己
--需求说明,在signBook2中有一列date_time,值是201210201221,我需要将其前面的2012,改成2014,所以写了下面这段存储过程

--_id是表中的一列,是主键identity的

declare @i int
declare @datetime varchar(50)
set @i=613
while(@i<678)
begin
set @datetime =(select date_time from signBook2 where _id=@i)
--下面这句,也是可以的
--select @datetime = date_time from signBook2 where _id = @i
print @datetime--此句输出datetime的值
--substring(expression,start,length)
print substring(@datetime,5,9)
print str(@datetime)--刚开始,我使用这个函数,造成了错误,此处会将变量的值变成'**********'
set @datetime = '2014'+ltrim(substring(@datetime,5,9))
print @datetime
update signBook2 set date_time=@datetime where _id=@i
set @i=@i+1
end

--总结,经网上查证,str函数->str(nExpres[,nLength[,nDecimalPlaces]])
--nExpression------str要计算的数值表达式.
--nLength------------str返回的字符长度。该长度包括小数点所占的字符和小数点右边每个数字所占的字符。
--如果指定长度大于小数点左边数字位数,str()前导空格填充返回的字符串;
--如果指定长度小于小数点左边的数字位数,str()返回一串星号,表示数值溢出。
--nDecimalPlaces---由STR()返回字符串中的小数位数。若要指定小数位数,必须同时包含nLength。
--如果指定的小数位数小于nExpress中的小数位数,则截断多余的数字。
--返回值类型->字符型