博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【SQLSERVER】如何找出字符串中的数字
阅读量:6240 次
发布时间:2019-06-22

本文共 1131 字,大约阅读时间需要 3 分钟。

可以通过写自定义函数实现,以下提供两种思路来解决:

1、通过正则匹配,找到字符串中的数字,一个一个拼起来

/*方法一: 一个一个找出来*/CREATE FUNCTION [dbo].[Fun_GetNumPart] ( @Str NVARCHAR(MAX) )RETURNS NVARCHAR(MAX)AS    BEGIN        DECLARE @Start INT;        DECLARE @End INT;         DECLARE @Part NVARCHAR(MAX)        SET @Start = PATINDEX('%[0-9]%', @Str);        SET @End = PATINDEX('%[0-9]%',SUBSTRING(@Str, @Start+1,LEN(@Str) - @Start));        SET @Part = SUBSTRING(@Str,@Start,1)         WHILE  @End >0         BEGIN                 SET @Start = @start+@End                SET @Part = @Part+SUBSTRING(@Str,@Start,1)                       SET @End = PATINDEX('%[0-9]%',SUBSTRING(@Str, @Start+1,LEN(@Str) - @Start));         END                    RETURN  @Part;    END;

 

2、通过正则逆向匹配,找到字符串中的非数字,一个一个去掉

/*方法二:一个一个去掉*/CREATE FUNCTION [dbo].[Fun_GetNumPart]  ( @Str NVARCHAR(MAX) ) RETURNS NVARCHAR(MAX)   AS   BEGIN       WHILE PATINDEX('%[^0-9]%',@Str)>0       BEGIN           SET @Str=STUFF(@Str,PATINDEX('%[^0-9]%',@Str),1,'') --删掉非数字的字符    END       RETURN @Str END

效果如下图:

延伸:

可以通过将函数中的 '%[0-9]%' 替换成 '%[A-Z]%'、'%[吖-做]%',,改造成找字母、找中文的函数

 

转载于:https://www.cnblogs.com/TurboWay/p/7239046.html

你可能感兴趣的文章