我有2个相同的查询,但结果不同。对我来说,正确的结果是Oracle,但是我需要在SQL Server中执行
SQL Server:
select power((1 + (power(1 + 0.05, 1 / 365)) - 1), 50) - 1
RESULTADO
0.00
ORACLE
select power(1+(power(1+0.05,1/365)-1),50)-1 from dual
RESULTADO
0,00670596912409796087090820980679344256
为什么会这样?
答案 0 :(得分:2)
在SQL情况下,您仅在“。”之后使用两个“ 0”。
尝试使用多于2.的值,之后应该会得到相同的结果。
:)
答案 1 :(得分:1)
SQL Server表达式中的数字为integer or decimal constants。 您需要使其中一些浮点常量,以便结果也为浮点。
您可以这样做:
select power((1 + (power(1 + 5E-2, 1 / 365E0)) - 1), 50) - 1
结果:
0,00670596912411203
您可以使用SQL_VARIANT_PROPERTY验证表达式的类型:
select SQL_VARIANT_PROPERTY ( 1 / 365E0, 'BaseType'),
SQL_VARIANT_PROPERTY ( 1 / 365E0, 'Precision'),
SQL_VARIANT_PROPERTY ( 1 / 365, 'BaseType'),
SQL_VARIANT_PROPERTY ( 1 / 365, 'Precision'),
SQL_VARIANT_PROPERTY ( 0.05, 'BaseType'),
SQL_VARIANT_PROPERTY ( 0.05, 'Precision')