我使用 MySQL,我想选择值(DECIMAL),在这种情况下是工资范围。
我想根据输入变量四舍五入到适当的 10 次方来设置薪资范围。
例如:
对于输入 100000 我想选择 value > 100000 AND value < 199999
对于输入 20000,我想选择 value > 20000 AND value < 29999
对于输入12345,我想选择value > 10000 AND value < 19999
对于输入 1000,我想选择 value > 1000 AND value < 1999
如何实现这一点(仅限 MySQL)?
最佳答案
我设法让这段代码正常工作,这会产生
工资 100000 值 100000 和 199999
工资 20000 值 20000 和 29999
工资 23456 值 20000 和 29999
在 sqlfiddle 上查看 http://sqlfiddle.com/#!2/d41d8/46326
SET @THE_SALARY = 100000;
SELECT FLOOR((@THE_SALARY / POW(10,CEIL(LOG10((@THE_SALARY)+1))-1)))*POW(10,CEIL(LOG10((@THE_SALARY)+1))-1), FLOOR((@THE_SALARY / POW(10,CEIL(LOG10((@THE_SALARY)+1))-1))+1)*POW(10,CEIL(LOG10((@THE_SALARY)+1))-1)-1
从此您可以执行以下操作:
SET @THE_SALARY = 12345;
SELECT * FROM yourtable WHERE salary > FLOOR((@THE_SALARY / POW(10,CEIL(LOG10((@THE_SALARY)+1))-1)))*POW(10,CEIL(LOG10((@THE_SALARY)+1))-1) AND salary < FLOOR((@THE_SALARY / POW(10,CEIL(LOG10((@THE_SALARY)+1))-1))+1)*POW(10,CEIL(LOG10((@THE_SALARY)+1))-1)-1
关于MySQL SELECT 范围基于舍入到适当的 10 次方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26273059/