有一个表A,A中有一个字段存放的是文件名,如:capdf_0003432_3423.cadrw,现在希望把文件名小数点后的四位字符由小写改为大写,即把cadrw改为CADRw,小数点前的文件名称不变,表中有N条纪录,有什么方法吗?

解决方案 »

  1.   

    UPDATE TB SET COL=STUFF(COL, CHARINDEX('.', COL)+1, 4, SUBSTRING(COL,CHARINDEX('.',COL)+1,4))
      

  2.   

    declare @s varchar(40)
    set @s='capdf_0003432_3423.cadrw'
    select replace(@s,substring(@s,charindex('.',@s)+1,4),UPPER(substring(@s,charindex('.',@s)+1,4)))
    /*
                                                                                                                                                                                                                                                                     
    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 
    capdf_0003432_3423.CADRw(所影响的行数为 1 行)*/
      

  3.   


    UPDATE TB SET COL=STUFF(COL, CHARINDEX('.', COL)+1, 4,UPPER( SUBSTRING(COL,CHARINDEX('.',COL)+1,4)))
      

  4.   

    update 表 set 字段=replace(字段,substring(字段,charindex('.',字段)+1,4),UPPER(substring(字段,charindex('.',字段)+1,4)))
      

  5.   

    select
     replace(col,substring(col,charindex('.',col)+1,4),
     upper(substring(col,charindex('.',col)+1,4)))
      

  6.   

    -- 修改?
    update tb set col=replace(col,substring(col,charindex('.',col)+1,4),
     upper(substring(col,charindex('.',col)+1,4)))
      

  7.   

    declare @var varchar(2000)
    set @var='capdf_0003432_3423.cadrw'
    select stuff(@var,charindex('.',@var)+1,4,upper(substring(@var,charindex('.',@var)+1,4)))/*
    -----------------------------------------------------------
    capdf_0003432_3423.CADRw(所影响的行数为 1 行)
    */
      

  8.   


    UPDATE TB 
    SET COL=STUFF(COL, CHARINDEX('.', COL)+1, len(COL) - CHARINDEX('.', COL),
     upper(SUBSTRING(COL,CHARINDEX('.',COL)+1,len(COL) - CHARINDEX('.', COL))))
      

  9.   

    --修改
    update 表名 set 字段名=select stuff(字段名,charindex('.',字段名)+1,4,upper(substring(字段名,charindex('.',字段名)+1,4)))
      

  10.   

    谢谢各位,问题解决。
    但是如果小数点前面的文件名中还包括另外一个小数点呢?如:capdf_0003.432_3423.cadrw
    实际上要改的是后一个小数点后四位
      

  11.   

    update tb set col=replace(col,substring(col,charindex('.',col)+1,4),
     upper(substring(col,charindex('.',col)+1,4)))