Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL:动态循环_Sql_Oracle_Rounding - Fatal编程技术网

SQL:动态循环

SQL:动态循环,sql,oracle,rounding,Sql,Oracle,Rounding,我希望对SQL语句生成的值进行舍入,但要动态舍入 我实际上忘记了这个词的官方术语,但是你可以用这个解释来理解它: 129.12144214 --> 129 0.000052142124 --> 0.0000521 2.213131 --> 2.21 在这种情况下,非零小数的数量当然是3 如何在SQL中实现这一点?按照这些步骤,您应该会得到所需的结果(例如129.12144214): 获取日志10:211099836751079 减少小数:2 把你的名字改成,。。。带(10^

我希望对SQL语句生成的值进行舍入,但要动态舍入

我实际上忘记了这个词的官方术语,但是你可以用这个解释来理解它:

129.12144214 --> 129
0.000052142124 --> 0.0000521
2.213131 --> 2.21
在这种情况下,非零小数的数量当然是3


如何在SQL中实现这一点?

按照这些步骤,您应该会得到所需的结果(例如129.12144214):

  • 获取日志10:211099836751079
  • 减少小数:2
  • 把你的名字改成,。。。带(10^2):1.29121442
  • 四舍五入至2位小数:1.29
  • 乘以(10^2):129
其思想是将每个值都设置为0到10之间的值,然后四舍五入到两位小数,然后将其恢复到原来的“范围”

在SQL中类似(好的,我已经在SQL Server中完成了,但是命令应该是相同的):


SQL中的一切都是可能的!^^你能更详细地解释一下逻辑吗?你为什么期望129而不是129.121?刚刚修复了示例中的一个错误。。。我只想要前三个非零值,后面什么都不要。5001.123的预期结果是什么?和0.01?它的预言:选择(圆(0.00005214124/功率(10,楼层(日志(10,0.00005214124))),2))*功率(10,楼层(日志(10,0.00005214124)))作为双
DECLARE @x decimal(18,6);
SET @x = 129.12144214  ;

SELECT (ROUND(@x / POWER(10, FLOOR(LOG10(@x))), 2)) * POWER(10, FLOOR(LOG10(@x)))