sql-server – 使用IF IsNumeric作为参数
发布时间:2020-12-12 06:54:52 所属栏目:MsSql教程 来源:网络整理
导读:我想知道如何在SQL中使用IsNumeric,它与VBScript有点不同,但我想我能绕过它,即: IF 1 = ISNUMERIC('5675754674') BEGIN ... END 这会是一种解决方法吗?我真正想做的是: IF ISNUMERIC('5675754674')BEGIN ... END 但这会产生错误.示例1似乎有效,但只是确保
我想知道如何在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中,您将有一个名为 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |