读书人

如何去除字段内容中的数字

发布时间: 2013-11-14 22:02:51 作者: rapoo

怎么去除字段内容中的数字
例如
(编码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阿萨德发')

读书人网 >SQL Server

热点推荐