表A
name           city      newname
常州市           江苏省
江苏省苏州市     江苏省
浙江省杭州市     浙江省
宁波市           浙江省运行的结果中:
newname列的值为江苏省常州市           
江苏省苏州市     
浙江省杭州市     
浙江省宁波市意思是,如果name 字段的值中含有city的值,那newname就等于name  ,如果没有city的值,就等于city+name

解决方案 »

  1.   

    select name,city , newname = case when charindex(city , name) > 0 then name else city + name end from tb 
      

  2.   

    create table tb(name varchar(20) , city varchar(20))
    insert into tb values('常州市'       ,          '江苏省') 
    insert into tb values('江苏省苏州市' ,          '江苏省') 
    insert into tb values('浙江省杭州市' ,          '浙江省') 
    insert into tb values('宁波市'       ,          '浙江省') 
    goselect name,city , newname = case when charindex(city , name) > 0 then name else city + name end from tb drop table tb/*
    name                 city                 newname
    -------------------- -------------------- ----------------------------------------
    常州市                  江苏省                  江苏省常州市
    江苏省苏州市               江苏省                  江苏省苏州市
    浙江省杭州市               浙江省                  浙江省杭州市
    宁波市                  浙江省                  浙江省宁波市(4 行受影响)*/