比如有的字符型字段,存了个值内容:  '11-15'  ,怎么让前面的数值加1,让他显示成 '12-15'呢?

解决方案 »

  1.   


    declare @str varchar(10)
     
    set @str='11-15'
     
    select rtrim(cast(Parsename(replace(@str,'-','.'),2) as int)+1)+'-'+Parsename(replace(@str,'-','.'),1)
    -------------
    12-15(1 行受影响)
      

  2.   

    如果固定是左边2位,这样能短点:
    declare @s varchar(10)
    set @s='11-15'
    select ltrim(left(@s,2)+1)+right(@s,len(@s)-2)
    /*
    12-15
    */
      

  3.   


    declare @s varchar(10)
    set @s='111-15'
    select ltrim(left(@s,charindex('-',@s)-1)+1)+right(@s,len(@s)-(charindex('-',@s)-1))
    /*
    112-15
    */
      

  4.   


    如果是数字长度固定是2位的,可以使用上面简单的写法,如果长度不固定,那就简单不了了:select cast(left('11-15',charindex('-','11-15')-1)+1 as varchar) +
           right('11-15',len('11-15')-charindex('-','11-15')+1)
      

  5.   


    --不能再短了
    declare @str varchar(10)
     
    set @str='11-15'
     
    select rtrim(Parsename(replace(@str,'-','.'),2)+1)+'-'+Parsename(replace(@str,'-','.'),1)