从一字符串中,过滤所有非数字的字符,留下数字。循环所有字符,使用正则[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]即可。