在sql server中使用isnumeric捕获异常

2024-06-23

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

1
65
5 excellent
54
-1
-
.

如果我在最后一个示例中使用 isnumeric,我会得到 1,但是当我尝试转换为数字时,我收到错误。我想在函数中使用 try-catch 但不能,我该如何处理?


顺便说一句,一个更糟糕的例子是'-.', which isnumeric()认为有效。

我的建议是在值中至少查找一位数字。恶心,但是:

isnumeric(val) and val like '%[0-9]%'

注意isnumeric()还认为指数表示法中的某些内容是有效的。所以'8e4'将测试为阳性。这对您来说可能不是问题,因为它将转换为有效值。这样的匹配在过去给我带来了问题,所以我倾向于使用类似的东西:

val not like '%[^0-9.]%' and val not like '%.%.%' and val like '%[0-9]%'

也就是说,它只有小数点和数字。而且,它没有两位小数。但是,它只适用于正值。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在sql server中使用isnumeric捕获异常 的相关文章

  • 使用 Union 或 Join - 哪个更快 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我只是想知道你是否有一张桌子并且联合起来会比使用联接更有效吗 我确实知道联接创建了更多列 但这更具理论性 联合是否需要像联接那样对另一
  • 将 XML 文件导入 SQL Server(不使用 BULK)

    我正在尝试将数据从 XML 文件导入到数据库中 我使用了一个测试脚本BULK INSERT 但是当我在实时数据库上进行测试时 权限BULK被禁用 尝试 1 BULK INSERT XMLTable FROM C Radu test xml
  • 在sql中运行累积返回

    希望获得一系列每日收益的连续累积收益 我知道这可以使用 exp 和 sum 来解决 但我的返回序列不是使用 LN 计算的 希望在不使用循环的情况下解决这个问题 因为它们在 sql 中效率非常低 让它跑得快很重要 Dataset 期望的结果
  • 哪个 SQL 语句更快? (有与在哪里......)

    SELECT NR DZIALU COUNT NR DZIALU AS LICZ PRAC DZIALU FROM PRACOWNICY GROUP BY NR DZIALU HAVING NR DZIALU 30 or SELECT NR
  • SQL Server 2008插入优化

    我必须将大量行 超过 1 000 000 000 插入到 SQL Server 数据库中 该表有一个 AI Id 两个 varchar 80 列和一个以 GETDATE 作为默认值的小日期时间 最后一项只是为了听觉 但却是必要的 我想知道插
  • knex.where容易受到sql注入攻击吗?

    这是一个后续问题https stackoverflow com a 50337990 1370984 https stackoverflow com a 50337990 1370984 它提到knex table where descri
  • 根据多列删除重复项

    我使用以下内容列出了重复项 select s MessageId t from Message s join select ToUserId FromUserId count as qty from Message group by ToU
  • 如何使用 SQL 语法更改主键约束?

    我有一个表 其主键约束中缺少一列 我不想通过 SQL Server 对其进行编辑 而是想将其放入脚本中以将其添加为更新脚本的一部分 我可以使用什么语法来执行此操作 我必须删除并重新创建关键约束吗 是的 唯一的方法是使用 Alter 表删除约
  • SQL Server 使用递归 CTE 获取路径

    我想以 1 1 1 2 等格式获取每个部门的路径 这是我的部门表 id name parentId 1 Dep 1 0 2 Dep 2 1 3 Dep 3 0 4 Dep 4 1 5 Dep 5 4 6 Dep 6 2 这是我的递归 CTE
  • SQL Server 2008:TOP 10 和不同的一起

    正如标题所示 我正在使用 SQL Server 2008 如果这个问题非常基本 我深表歉意 我才使用 SQL 几天 现在我有以下查询 SELECT TOP 10 p id pl nm pl val pl txt val from dm la
  • 主键和代理键有什么区别?

    我用谷歌搜索了很多 但没有找到带有示例的确切直接答案 任何例子都会更有帮助 主键是表中的唯一键 您选择它可以最好地唯一标识表中的记录 所有表都应该有一个主键 因为如果您需要更新或删除一条记录 您需要知道如何唯一标识它 代理键是人工生成的键
  • SQL LIKE 的 C# 版本

    有没有办法在 C 中搜索字符串中的模式 像 Sql LIKE 这样的东西会非常有用 正则表达式允许一切LIKE允许以及更多 但具有完全不同的语法 然而 由于规则LIKE是如此简单 其中 表示零个或多个字符 并且 表示一个字符 并且两者LIK
  • 当 COUNT(*) 为 NULL 时,GROUP BY 返回 0

    这是我原来的查询 SELECT CAST IndexedDate as varchar COUNT AS Logins FROM Table WHERE EventType Login AND IndexedDate gt DATEADD
  • sp_MSforeachtable 在每个表上执行过程

    我想打印一些动态查询来对数据库中的所有表执行过程 这是我到目前为止所写的 EXEC SP MSFOREACHTABLE IF EXISTS SELECT FROM INFORMATION SCHEMA COLUMNS WHERE COLUM
  • 为什么使用 SQL Server Express 添加的记录未显示在 SQL Server Management Studio 中?

    我正在测试大量的数字音乐文件记录 我的添加例程是 foreach AlbumModel albumModel in albs try Album album GetAlbum albumModel cmd CommandText inser
  • 限制 SQL 查询的响应时间

    我在这里发布了一个关于我的 gridview 绑定的问题 将GridView与多条记录绑定 https stackoverflow com questions 5599704 bind gridview with many records
  • SQL LIKE 实际上是如何工作的

    例如 当我有这样的字符串时 ABBBCSLAK JDK ASAAAAFJKDSKJFSDF 当我像这样使用 SQL 时 SELECT FROM table WHERE column LIKE JDK 当服务器访问 JDK 时到底会发生什么
  • PowerShell:带有 Get-Credential 的 invoke-sqlcmd 不起作用

    我从未见过如此简单的脚本会如此失败 SQLServer localhost cred Get Credential invoke sqlcmd ServerInstance SQLServer Credential cred Query s
  • 从条件表中获取 WHERE 子句的条件

    我创建了以下简单的DataModel 我用以下数据填充了表格 1 桌子Customer INSERT INTO test customer CustomerName Country RegistrationDate VALUES Custo
  • 邮政编码 10 位数字字符使用的约束检查

    我有一张桌子 上面有Char 10 列类型 命名postal Code我需要对所有值进行约束检查 就像 10 位数字一样1234567890没有别的 我使用以下内容 CONSTRAINT CH PCDigit CHECK PostalCod

随机推荐