sql - 在sql server中使用isnumeric捕获异常

标签 sql sql-server

我在一列中有这些可能的值

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/

相关文章:

sql - 如何在具有空值的 Snowflake 中使用 `GREATEST()`?

python - Pyodbc 与 SQL Server 的连接失败 - 未提供 DSN 和 SERVER 关键字

sql - Entity Framework 生成的 SQL - SELECT TOP (X) 比 SELECT 多花费 500% 的时间

sql语句单引号双引号-BOF或EOF为真

sql-server - Azure 托管标识是否支持本地 MS SQL 数据库?

sql - sql server 2008 r2 中的数字(18, 0) 是什么

mysql - 每天的记录数,包括0个值

sql - Postgres SQL查询特定元素中的数组文本[]

Mysql随时间的分区

mysql - 在两个表中删除会出错