SQL Server中的异常处理:拒绝非整数输入

时间:2015-03-24 12:38:38

标签: sql-server exception-handling

我试图在存储过程中编写SQL命令,允许我获取VARCHAR输入,评估它是否是整数。如果不是,则必须将布尔值设置为false: 所以我想写下面的逻辑:

IF @parameter <> an int
    SET isInt = FALSE

我阅读了TRY / CATCH文章,但我不知道如何在SQL中执行此操作:https://msdn.microsoft.com/en-ca/library/ms175976.aspx

2 个答案:

答案 0 :(得分:2)

您可以使用ISNUMERIC函数来测试输入是否为数字。

SELECT ISNUMERIC(@parameter) as output

由于数值也可以是bigintsmallintdecimal等。因此,为了仅比较整数,您可以尝试这样的事情(归功于this blog)

SELECT IsNumeric(@parameter + '.0e0') as integerOutput

答案 1 :(得分:2)

如果是'2012或2014,请使用TRY_PARSE()功能:

https://msdn.microsoft.com/en-us/library/hh213126.aspx

对于早期版本,您必须尝试转换它并处理错误:

declare @s varchar(10) = 'abc'
declare @isInt bit = 1

begin try
    declare @i int;
    set @i = @s
end try
begin catch
    set @isInt = 0
end catch

select @isInt