在MS SQL中处理用户输入的数值是否为Integer,为了简化程序代码,可以使用下面函数。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
CREATE FUNCTION [dbo].[IsInteger]
(
@Value NVARCHAR(4000)
) RETURNS NVARCHAR(4000)
AS
BEGIN
DECLARE @ResultValue BIT = 1
--如果IS NULL把值设为N''
SET @Value = ISNULL(LTRIM(@Value), N'')
--处理前导N'-'字符串,如果有,把它移除,这样才好做以下的判断。
SET @Value = CASE WHEN SUBSTRING(@Value, 1, 1) = N'-' THEN SUBSTRING(@Value, 2, LEN(@Value) - 1) ELSE @Value END
--如不是数据或为N''返加Faluse
IF @Value LIKE '%[^0-9]%' OR @Value = N''
SET @ResultValue = 0
RETURN @ResultValue
END
(
@Value NVARCHAR(4000)
) RETURNS NVARCHAR(4000)
AS
BEGIN
DECLARE @ResultValue BIT = 1
--如果IS NULL把值设为N''
SET @Value = ISNULL(LTRIM(@Value), N'')
--处理前导N'-'字符串,如果有,把它移除,这样才好做以下的判断。
SET @Value = CASE WHEN SUBSTRING(@Value, 1, 1) = N'-' THEN SUBSTRING(@Value, 2, LEN(@Value) - 1) ELSE @Value END
--如不是数据或为N''返加Faluse
IF @Value LIKE '%[^0-9]%' OR @Value = N''
SET @ResultValue = 0
RETURN @ResultValue
END