![]() |
1
11
您需要将逗号替换为句点:
|
![]() |
2
5
首先将字符串转换为货币,然后将其转换为任何其他数字格式,因为货币类型始终提供真实的数字字符串。你永远不会看到错误。 在您的查询中尝试以下内容,您就会知道我在说什么。两者都将返回2345.5656。Money数据类型四舍五入到小数点后4位,因此强制转换导致四舍五入到小数点后4位。
Cast(Cast('2344'作为货币)作为float)可以完美地工作,或者 十进制(7,2)的cast(cast('2344'为货币)也会起作用。 甚至cast(cast('2345.56556'作为money)作为int也可以完美地将其舍入到最接近的整数。 |
![]() |
3
4
SQL isnumeric存在许多问题。例如:
这将返回1,但在许多语言中,如果尝试将其转换为数字,则会失败。更好的方法是使用需要检查的参数创建自己的用户定义函数: |
![]() |
4
1
当输入表达式的计算结果为有效整数、浮点数、货币或十进制类型时,ISNUMERIC返回1;
|
![]() |
5
1
凯尔, 我认为这解决了问题。问题在于ELSE子句将结果初始化为整数。通过对FLOAT进行显式类型转换并添加Quassnoi的建议,它似乎起到了作用。
当做
|
![]() |
6
1
|
![]() |
7
0
此解决方案并非在所有情况下都有效(特别是带有货币和/或千分隔符的数字)。将指数表示连接到由字符串表示的数字的末尾…从这里开始,ISNUMERIC()可以正常工作。举例如下:
这至少使使用REPLACE()函数的格式标准化。 |
![]() |
8
0
我刚刚遇到这个问题。
注:
|
![]() |
John D · 需要为NULL或NOT NULL的WHERE子句 5 月前 |
![]() |
Marc Guillot · 记录值时忽略冲突 6 月前 |
![]() |
Fachry Dzaky · 正确使用ROW_NUMBER 6 月前 |
![]() |
TriumphTruth · 从满足特定条件的数据集中选择1行 6 月前 |