欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

过滤所有非数字的字符

程序员文章站 2022-05-03 22:35:21
从一字符串中,过滤所有非数字的字符,留下数字。循环所有字符,使用正则[0-9]来匹配。 SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- -- Author: Insus.NET -- Create date: 2019-05-14 -- Upd ......

从一字符串中,过滤所有非数字的字符,留下数字。循环所有字符,使用正则[0-9]来匹配。

 

set ansi_nulls on
go

set quoted_identifier on
go

-- =============================================
-- author:      insus.net
-- create date: 2019-05-14
-- update date: 2019-05-14
-- description: 过滤所有非数字的字符
create function [dbo].[svf_digitalonly] ( 
    @originalstring nvarchar(max)
)
returns nvarchar(max)
as
begin
    declare @tstr nvarchar(max) = n'', @i int = 1
    while @i <= len(@originalstring) 
    begin 
        set @tstr = @tstr + case when substring(@originalstring, @i, 1) like '[0-9]' then substring(@originalstring, @i, 1) else n'' end 
   
        set @i = @i + 1 
    end

    return @tstr
end
go

 

试试执行函数:

 

 

扩展知识,如果保留字母呢,那可以把上面函数中的正则表达式[0-9]改为[a-za-z]即可。