34,588
社区成员
发帖
与我相关
我的任务
分享
借用临时表
create TABLE t3(v VARCHAR(15))
INSERT into t3 SELECT '33电话'
UNION ALL SELECT '33电视'
UNION ALL SELECT '33电脑'
UNION ALL SELECT '34电话'
UNION ALL SELECT '34电话'
UNION ALL SELECT '34电视'
UNION ALL SELECT '33电脑'
UNION ALL SELECT '33电池'
UNION ALL SELECT '31电话'
UNION ALL SELECT '31电视'
UNION ALL SELECT '31电脑'
UNION ALL SELECT '32电话'
UNION ALL SELECT '32电视'
UNION ALL SELECT '32电脑'
select id=identity(int,1,1),* into #temp from t3 group by v
select left(v,2)+right('00'+cast((select count(1) from #temp
where id<a.id and left(v,2)=left(a.v,2))+1 as varchar),2)+right(v,len(v)-2) v from #temp a
create TABLE #(Name VARCHAR(15))
INSERT # SELECT '33电话'
UNION ALL SELECT '33电视'
UNION ALL SELECT '33电脑'
UNION ALL SELECT '34电话'
UNION ALL SELECT '34电话'
UNION ALL SELECT '34电视'
UNION ALL SELECT '33电脑'
UNION ALL SELECT '33电池'
UNION ALL SELECT '31电话'
UNION ALL SELECT '31电视'
UNION ALL SELECT '31电脑'
UNION ALL SELECT '32电话'
UNION ALL SELECT '32电视'
UNION ALL SELECT '32电脑'
go
alter table # add ID int identity(1,1)
go
---查询
select
Name=left(Name,2)+(select right('00'+rtrim(count(1)),2) from # where left(Name,2)=left(t.Name,2) and ID!>t.ID)+right(Name,2)
from
# t
go
update t
set Name=left(Name,2)+(select right('00'+rtrim(count(1)),2) from # where left(Name,2)=left(t.Name,2) and ID!>t.ID)+stuff(Name,1,2,'')
from
# t
go
alter table # drop column ID--删除辅助列
go
select * from #
Name
---------------
3301电话
3302电视
3303电脑
3401电话
3402电话
3403电视
3304电脑
3305电池
3101电话
3102电视
3103电脑
3201电话
3202电视
3203电脑
(所影响的行数为 14 行)
DECLARE @t TABLE(v VARCHAR(15))
INSERT @t SELECT '33电话'
UNION ALL SELECT '33电视'
UNION ALL SELECT '33电脑'
UNION ALL SELECT '34电话'
UNION ALL SELECT '34电话'
UNION ALL SELECT '34电视'
UNION ALL SELECT '33电脑'
UNION ALL SELECT '33电池'
UNION ALL SELECT '31电话'
UNION ALL SELECT '31电视'
UNION ALL SELECT '31电脑'
UNION ALL SELECT '32电话'
UNION ALL SELECT '32电视'
UNION ALL SELECT '32电脑'
DECLARE @cid INT,@idx INT,@old INT
UPDATE @t SET @cid=LEFT(v,2),@idx=CASE WHEN @old=@cid THEN @idx+1 ELSE 1 END,@old=@cid,v=RTRIM(@cid) + RIGHT('00' + RTRIM(@idx),2) + STUFF(v,1,2,'')