日期:2014-05-18 浏览次数:20579 次
create table tb(col varchar(20)) insert into tb values('ATO14') insert into tb values('ATT14W1') insert into tb values('AYE10B') insert into tb values('AYH010B2H') insert into tb values('AC11') insert into tb values('AC115') insert into tb values('AC115HC') insert into tb values('AYCH245HIP') go create function dbo.f_str(@col varchar(50)) returns varchar(50) as begin declare @str varchar(50) set @str = '' declare @i as int set @i = 1 declare @j as int set @j = len(@col) declare @k as int set @k = 0 declare @l as int set @k = 0 while @i <= @j begin if substring(@col , @i , 1) between '0' and '9' begin if @i = @j begin set @str = @str + substring(@col , @l , @i - @l + 1) break end if @k = 0 begin set @k = 1 set @l = @i end end else begin if @k = 0 set @str = @str + substring(@col , @i , 1) else begin set @str = @str + substring(@col , @l , @i - @l) break end end set @i = @i + 1 end return @str end go --调用函数 select col , new_col = dbo.f_str(col) from tb drop function dbo.f_str drop table tb /* col new_col -------------------- -------------------------------------------------- ATO14 ATO14 ATT14W1 ATT14 AYE10B AYE10 AYH010B2H AYH010 AC11 AC11 AC115 AC115 AC115HC AC115 AYCH245HIP AYCH245 (所影响的行数为 8 行) */
------解决方案--------------------