gpt4 book ai didi

sql - 为什么 "0D0"在 SQL Server 2008 中被视为数字?

转载 作者:行者123 更新时间:2023-12-02 15:43:29 25 4
gpt4 key购买 nike

知道为什么 ISNUMERIC('0D0') = 1 在 SQL Server 2008 中为 TRUE 吗?

我正在验证来自另一个系统的 ID 号,其中有时包含我们不想带过来的字母,但这种组合会导致代码出错(它认为是数字的特定 ID 是“005406257D6”)。下游我们正在执行CONVERT(BIGINT, @val),当它找到这些“D”值时,这显然令人窒息。

我遇到了什么特殊情况?我该如何解释?

最佳答案

基本上,IsNumeric 是无用的 - 它验证的只是字符串可以转换为任何数字类型。在这种情况下,“0D0”可以转换为 float 。 (我不记得原因了,但实际上“D”是“E”的同义词,意味着它是科学计数法):

select CONVERT(float,'2D3')

2000

如果您想验证它是否只是数字,那么而不是 @val like '%[^0-9]%' 会是更好的测试。您还可以通过添加长度检查来进一步改进这一点。

关于sql - 为什么 "0D0"在 SQL Server 2008 中被视为数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4430502/

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