id 编号 name 地区名字 jc 地区简称
id name jc
100 中国 zg
1001 湖北 hb
1001001 武汉 wh
1001002 黄冈 hg
1002 四川 sc
1002001 成都 cd
要求把省以下城市的简写 换成与省简写一样
declare @tb table(id varchar(50), name varchar(50), jc varchar(20))
insert @tb (id, name, jc)
select '100', '中国', 'zg' union all
select '1001', '湖北', 'hb' union all
select '1001001', '武汉', 'wh' union all
select '1001002', '黄冈', 'hg' union all
select '1002', '四川', 'sc' union all
select '1002001', '成都', 'cd'
select * from @tb
update a
set
a.jc = (select c.jc from @tb c where left(a.id,4) = c.id)
From @tb a, @tb b
Where len(a.id)> 4
select * from @tb
/*Result
100 中国 zg
1001 湖北 hb
1001001 武汉 hb
1001002 黄冈 hb
1002 四川 sc
1002001 成都 sc
*/
SELECT a.*,
省简称 = CASE WHEN LEN(a.Id) > 4 THEN (SELECT jc FROM Table b WHERE b.id = a.substring(id, 1, 4))
LESE '' END
FROM Table a
就是一个自关联。大概这样,没测试过。
update table_name set
table_name.jc=(select c.jc from table_name c where left(table_name.id,4)=c.id and len(table_name.id)>4)
where len(table_name.id)>4