为什么“0D0”在SQL Server 2008中被视为数字?
发布时间:2020-12-12 06:59:10 所属栏目:MsSql教程 来源:网络整理
导读:知道为什么ISNUMERIC(‘0D0’)= 1在SQL Server 2008中为TRUE? 我正在验证来自另一个系统的ID号,它有时包含我们不想带来的字母,但这种组合使代码跳闸(它认为数字的特定ID是“005406257D6”).下游我们正在做CONVERT(BIGINT,@ val),当它找到这些“D”值时显然会
知道为什么ISNUMERIC(‘0D0’)= 1在SQL Server 2008中为TRUE?
我正在验证来自另一个系统的ID号,它有时包含我们不想带来的字母,但这种组合使代码跳闸(它认为数字的特定ID是“005406257D6”).下游我们正在做CONVERT(BIGINT,@ val),当它找到这些“D”值时显然会窒息. 我打的是什么特例,我该怎么说呢? 解决方法基本上,IsNumeric是无用的 – 它验证的是字符串可以转换为任何数字类型.在这种情况下,“0D0”可以转换为浮点数. (我不记得原因,但有效地“D”是“E”的同义词,并且意味着它是科学记数法):select CONVERT(float,'2D3')
如果你想验证它只是数字,那么不像’%[^ 0-9]%’这样的@val会是一个更好的测试.您还可以通过添加长度检查来进一步改进. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- sql-server – SSRS – 进程die /在不使用后进入休眠状态
- MYSQL 批量替换之replace语法的使用详解
- sql-server – 什么时候创建STATISTICS而不是创建索引更好?
- linq-to-sql – 在LINQ to SQL下管理不同开发人员的连接字符
- SQLServer判断表存在
- sqlserver使用order by case when进行优先级排序
- sql-server – 估计数据库大小
- (SqlServer)批量清理指定数据库中所有数据
- sql-server-2008 – 在SQL Server 2008中的日期和时间之间进
- SqlServer Alwayson 搭建报错:19405