select replace('**_***/**_**','/','_')
replace()可以实现.

解决方案 »

  1.   

    update t set col = substring(col,1,6)+'/'+substring(col,8,2)+'_'+substring(col,11,2)
      

  2.   

    To libin_ftsafe(子陌红尘) 你有没有看题,*表示任意n个英文字母
    To aw511(点点星灯) :你根本没有看懂我的意思
      

  3.   

    试试这样呢:
    declare @strC varchar(4000)
    select replace(@strC,'/','_')
    select replace(@strC,'_***_**_','_***/**_')
    没测过支持通配符,不行的话就用charindex()了。
      

  4.   

    update table
    set col=stuff(stuff(col,7,1,'/'),10,1,'_')
    如果一部分是正确的。可以加个where条件。只更新错误的数据。
      

  5.   

    declare @tb table([字段] varchar(50))
    insert @tb
    select 'ab_cdefg_sdfg_sldfnk' union
    select 'adr_dfdsf_sdv/sdfds'  union
    select 'skds_sdfd/sdfds_sdfds'--形式:**_***_**_**
    update @tb 
    set [字段]=left([字段],charindex('_',stuff([字段],charindex('_',[字段]),1,'')))+
               '/'+
               right([字段],len([字段])-1-charindex('_',stuff([字段],charindex('_',[字段]),1,'')))
    where charindex('/',[字段])=0select * from @tb--形式:**_***_**/** 
    update @tb 
    set [字段]=replace([字段],'/','_')
    where charindex('/',reverse([字段]))<charindex('_',reverse([字段]))update @tb 
    set [字段]=left([字段],charindex('_',stuff([字段],charindex('_',[字段]),1,'')))+
               '/'+
               right([字段],len([字段])-1-charindex('_',stuff([字段],charindex('_',[字段]),1,'')))
    where charindex('/',reverse([字段]))<charindex('_',reverse([字段]))
    select * from @tb--结果
    /*
    原来的:
    ab_cdefg/sdfg_sldfnk
    adr_dfdsf_sdv/sdfds
    skds_sdfd/sdfds_sdfds(所影响的行数为 3 行)
    修改后的:ab_cdefg/sdfg_sldfnk
    adr_dfdsf/sdv_sdfds
    skds_sdfd/sdfds_sdfds(所影响的行数为 3 行)
    */