MySQL SELECT 范围基于舍入到适当的 10 次方

标签 mysql

我使用 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/

相关文章:

mysql - 如何建模 "participation in container and child"

MYSQL 根据条件更新

java - Apache Isis 和 MySQL

mysql - 使用 Flyway 时的幂等迁移

mysql - 如何在sql中排除具有某些值的记录

mysql - Sequelize/Node – 连接到空值

mysql - 具有相同字段值的行数

php - 计算列的内容

php - 我托管网站后,密码盐不起作用

php - FROM 子句中的子查询不再适用于新的 wampserver 版本