判断字符串是否为纯数字,负数不算。如'00012','54585','1000'

MS SQL自定义函数IsNumeric

 

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE FUNCTION [dbo].[svf_IsNumeric] 
(
  @string NVARCHAR(MAX)
) RETURNS BIT  --函数返BIT数据类型,是数字返回1,非数字返回0。
AS
BEGIN
    DECLARE @rtv BIT = 1   
    DECLARE @str NVARCHAR(MAX) = LTRIM(RTRIM(ISNULL(@string,''))) --去除前后空格,如果为NULL转为''
    
    DECLARE @start INT = 1; 
    DECLARE @end INT = LEN(@str) --获取字符串长度
     
    WHILE (@start <= @end)  --循环字符串每一个字符
    BEGIN
        DECLARE @Numeric VARCHAR(1) = ''
    
        SET @Numeric = SUBSTRING(@str, @start, @start + 1) -- 每循环一次,从左边获取一位字符
 
        IF ASCII(@Numeric) >= 48 AND ASCII(@Numeric) <= 57  --如果是数字
        BEGIN
            SET @start = @start + 1;
            CONTINUE  --继续循环    
        END
        ELSE
        BEGIN
            SET @rtv = 0
            BREAK  --跳出循环
        END
    END
    
    RETURN @rtv
END
Source Code

相关文章:

  • 2022-12-23
  • 2021-06-17
  • 2021-12-26
  • 2021-12-13
  • 2021-11-11
  • 2021-10-25
猜你喜欢
  • 2021-07-23
  • 2022-12-23
  • 2022-12-23
  • 2021-07-03
  • 2021-11-19
  • 2022-12-23
相关资源
相似解决方案