我试图在存储过程中编写SQL命令,允许我获取VARCHAR输入,评估它是否是整数。如果不是,则必须将布尔值设置为false: 所以我想写下面的逻辑:
IF @parameter <> an int
SET isInt = FALSE
我阅读了TRY / CATCH文章,但我不知道如何在SQL中执行此操作:https://msdn.microsoft.com/en-ca/library/ms175976.aspx
答案 0 :(得分:2)
您可以使用ISNUMERIC函数来测试输入是否为数字。
SELECT ISNUMERIC(@parameter) as output
由于数值也可以是bigint
,smallint
,decimal
等。因此,为了仅比较整数,您可以尝试这样的事情(归功于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