gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 14:16:52 24 4
gpt4 key购买 nike

我想知道如何在 SQL 中使用 IsNumeric,它与 VBScript 有点不同,但我认为我能够绕过它,即:

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

这是解决这个问题的方法吗?我真正想做的是:

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

但这会产生错误。示例 1 似乎可行,但只是确保我做得正确,无法在网上找到任何关于它的好的资源。

最佳答案

SQL Server 中没有 bool 值。这意味着您不能只说IF(表达式);您必须将其与某些内容进行比较,因为它确实会返回 truefalse,其含义与您在其他语言中可能习惯的含义相同。

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

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

SQL Server 中无法避免与 1 进行比较,如第二个示例所示。

顺便说一句,您应该意识到 ISNUMERIC() 的弱点 - 它可能会对“数字”值(例如 .)给出误报。 CHAR(9)e$ 以及许多其他非数字字符串。例如,如果你想知道某个东西是否是整数,最好说:

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

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

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

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

关于sql-server - 使用 IF IsNumeric 作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9286152/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com