日期:2014-05-17  浏览次数:20655 次

怎么去除字段内容中的数字
例如
(编码0String822101100)
这样的,我想把所有的数字全部去掉,只保留汉字和英语的

------解决方案--------------------

-- 建函数
create function dbo.fn001
(@x varchar(30)) 
returns varchar(30)
as
begin
 declare @y varchar(30),@i int
 select @i=1
 
 while(@i<=len(@x))
 begin
  select @y=isnull(@y,'')+case when ascii(substring(@x,@i,1)) between 48 and 57 then ''
                               else substring(@x,@i,1) end
  select @i=@i+1
 end
 
 return @y
end


-- 测试
declare @x varchar(30)
select @x='编码0String822101100'

select @x 'x1',dbo.fn001(@x) 'x2'

/*
x1                             x2
------------------------------ ------------------------------
编码0String822101100             编码String

(1 row(s) affected)
*/

------解决方案--------------------
--> 测试数据:#tb
IF OBJECT_ID('f_str') IS NOT NULL DROP FUNCTION f_str
GO 
CREATE FUNCTION f_str (@s VARCHAR(1000))
RETURNS VARCHAR(1000)
AS
BEGIN
WHILE PATINDEX('%[0-9]%',@s) >0
begin
 set @s=stuff(@s,patindex('%[0-9]%',@s),1,'')
END 
RETURN @s
END
go 
--------------测试--------------------------
SELECT dbo.f_str('sdfasdf123123撒旦发射点发123阿萨德发')