比如:字段  id(int) Names(char)
记录:   1     中国移动
         20    中国移动通信
         33    中国移动通信集团
         47    中国移动通信集团公司
有没有办法使这4条的Names都为表述最准确的既:字段  id(int) Names(char)
记录:   1     中国移动通信集团公司
         20    中国移动通信集团公司
         33    中国移动通信集团公司
         47    中国移动通信集团公司
  

解决方案 »

  1.   

    if object_id('tb') is not null
    drop table tb
    go
    create table tb(id int,names varchar(100))
    go
    insert tb select 1    ,'中国移动' 
    union all select 20  , '中国移动通信' 
    union all select 33 ,  '中国移动通信集团' 
    union all select 47,   '中国移动通信集团公司'
    union all select 50,   '中国移动通信集团总办'goupdate a set names=(select top 1 names from tb where names like a.names + '%' order by len(names) desc,newid())
    from tb a
    go
    select * from tb
    go/*
    1 中国移动通信集团公司
    20 中国移动通信集团总办
    33 中国移动通信集团公司
    47 中国移动通信集团公司
    50 中国移动通信集团总办*/
      

  2.   

    如果不出现我所说的那种情况,那么把 order by 后面的newid去掉。
      

  3.   

        fcuandy谢谢您的帮助。