如题,有表sheet1,里面有mc字段如下:
mc
地方(河西)事务所
地方(河西)事务所(分部1)
地方事务所(分部1)
地方事务所
想把mc列,字段后面的括号(包括括号本身)都删除掉,字段中间的保留,应该得到如下表:
mc
地方(河西)事务所
地方(河西)事务所
地方事务所
地方事务所谢谢

解决方案 »

  1.   

    select case when left(reverse(mc),1)='(' 
    then substring(mc,1,len(mc)-charindex(')',reverse(mc),1))
    else mc end as mc
    from tb
      

  2.   

    1楼写反了,第一个是 ) 第二个是 (
    declare @str varchar(40)
    set @str = '地方(河西)事务所(分部1)'select case when left(reverse(@str),1)=')' 
    then substring(@str,1,len(@str)-charindex('(',reverse(@str),1))
    else @str end as mc
    /********************mc
    ----------------------------------------
    地方(河西)事务所(1 行受影响)
    正确的:
    select case when left(reverse(mc),1)=')' 
        then substring(mc,1,len(mc)-charindex('(',reverse(mc),1))
        else mc end as mc
    from tb
      

  3.   


    declare @mc table (colname varchar(23))
    insert into @mc
    select '地方(河西)事务所' union all
    select '地方(河西)事务所(分部1)' union all
    select '地方事务所(分部1)' union all
    select '地方事务所'select case when right(colname,1)=')'
    then left(colname,len(colname)-charindex('(',reverse(colname))) else colname end from @mc
    /*
    地方(河西)事务所
    地方(河西)事务所
    地方事务所
    地方事务所
    */
      

  4.   

    create table tb(mc varchar(30))
    insert into tb
     select '地方(河西)事务所' union
     select '地方(河西)事务所(分部1)' union
     select '地方事务所(分部1)' union
     select '地方事务所' 
     
     update tb set mc=REVERSE(right(REVERSE(mc),len(mc)-CHARINDEX('(',REVERSE(mc))))
      where RIGHT(mc,1)=')'
     
     select * from tb
     
     /*
     mc
    ------------------------------
    地方(河西)事务所
    地方(河西)事务所
    地方事务所
    地方事务所