【SQLSERVER】如何找出字符串中的数字
时间:2021-07-01 10:21:17
帮助过:8人阅读
方法一: 一个一个找出来*/
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]%‘、‘%[吖-做]%‘,,改造成找字母、找中文的函数
【SQLSERVER】如何找出字符串中的数字
标签:img create -- 匹配 延伸 效果 一个 varchar tar