我的sql代码有一些数学问题。我希望能够使用数学公式在我的代码中解决以下问题,如果有人知道我想知道的话。
任意数字1-> 99: 10
任意数字100-> 999: 100
任意数字1000-> 9999: 1000 ...
无论如何只是从值中计算出10乘数?我觉得这应该是一个简单的公式,但我似乎无法得到它。
由于
答案 0 :(得分:4)
这个怎么样?
SELECT POWER(10, CONVERT(INT, LOG10(@Input)))
它取输入值的对数基数10(它返回你必须将10
加到的指数的值才能得到输入值),然后它会减去小数部分只留下整数,然后将10增加到那个力量。
答案 1 :(得分:3)
你只需要日志和他们的对面(权力)......
power(10, floor(log10(x)))
如下......
log10(99) = 1.9956351946
floor(1.9956351946) = 1
power(10, 1) = 10
但是,这确实假设您的示例有误并且1 -> 9
应该“舍入”为1 ......
log10(9) = 0.95424250943
floor(0.95424250943) = 0
power(10, 0) = 1