我在一列中有这个可能的值
1
65
5 excellent
54
-1
-
.
如果我在最后一个例子中使用 isnumeric 我得到 1,但是当我尝试转换为数字时我得到一个错误。我想在函数中使用 try-catch 但我不能,我该如何处理?
最佳答案
顺便说一下,一个更糟糕的例子是 '-.'
, isnumeric()
认为它是有效的。
我的建议是在值中至少查找一位。恶心,但是:
isnumeric(val) and val like '%[0-9]%'
请注意,
isnumeric()
还认为指数表示法中的某些内容是有效的。所以 '8e4'
将测试为阳性。这对您来说可能不是问题,因为它会转换为有效值。过去这样的比赛给我带来了问题,所以我倾向于使用类似的东西:val not like '%[^0-9.]%' and val not like '%.%.%' and val like '%[0-9]%'
也就是说,它只有小数点和数字。而且,它没有两个小数点。但是,它仅适用于正值。
关于sql - 在 sql server 中使用 isnumeric 捕获异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17838224/