sql-server – 使用IF IsNumeric作为参数

前端之家收集整理的这篇文章主要介绍了sql-server – 使用IF IsNumeric作为参数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想知道如何在sql中使用IsNumeric,它与VBScript有点不同,但我想我能绕过它,即:
IF 1 = ISNUMERIC('5675754674') 
 BEGIN 
 ...
 END

这会是一种解决方法吗?我真正想做的是:

IF ISNUMERIC('5675754674')
BEGIN 
... 
END

但这会产生错误.示例1似乎有效,但只是确保我做得对,无法在网上找到任何好的资源.

解决方法

sql Server中没有布尔值.这意味着你不能只说IF(表达式);你必须将它与某些东西进行比较,因为它确实会像你在其他语言中习惯的那样返回真或假.

只是一个偏好,但我更喜欢这样写:

IF ISNUMERIC('5675754674') = 1
BEGIN
...
END

sql Server中没有办法避免与1进行比较,如第二个示例所示.

另外,您应该注意ISNUMERIC()的弱点 – 它可以为“数字”值提供误报,例如.,CHAR(9),e,$和许多其他非数字字符串.如果你想知道某些东西是否是整数,例如,最好说:

IF '5675754674' NOT LIKE '%[^0-9]%'
BEGIN
...
END

但即使这不是一个完整而有效的测试,因为它将返回值为> (2 ^ 32)-1,对于负值,它将返回false.

ISNUMERIC()的另一个缺点是,如果值可以转换为任何数值类型,它将返回true,这与所有数字类型不同.通常人们测试ISNUMERIC(),然后尝试将FLOAT强制转换为SMALLINT,转换失败.

sql Server 2012中,您将有一个名为TRY_CONVERT()的新方法,如果转换为指定的数据类型无效,则返回NULL.

原文链接:https://www.f2er.com/mssql/77466.html

猜你在找的MsSQL相关文章