MYSQL 向上取整
时间: 2025-07-04 17:13:14 浏览: 0
在MySQL中,若需对数值进行**向上取整**(即向正无穷方向取整,如 `1.3` → `2`,`-1.3` → `-1`),可通过以下方法实现:
---
### **方法1:使用 `CEILING()` 或 `CEIL()` 函数**
```sql
SELECT CEILING(1.3); -- 结果: 2
SELECT CEIL(-1.3); -- 结果: -1
```
#### 说明:
- `CEILING()` 和 `CEIL()` 功能相同,均返回大于或等于输入值的最小整数。
- 参数可以是数值或数值类型的列。
---
### **方法2:结合 `ROUND()` 和条件判断(不推荐)**
若需自定义向上取整逻辑(如特殊舍入规则),可通过 `CASE WHEN` 实现:
```sql
SELECT
CASE
WHEN your_number > FLOOR(your_number) THEN FLOOR(your_number) + 1
ELSE your_number
END AS custom_ceil;
```
#### 缺点:
- 逻辑复杂,性能较差,建议优先用内置函数。
---
### **验证案例**
| 输入值 | `CEIL(value)` | 目标结果 |
|----------|---------------|----------|
| `1.3` | `2` | `2` |
| `-1.3` | `-1` | `-1` |
| `5.0` | `5` | `5` |
| `-2.0` | `-2` | `-2` |
---
### **注意事项**
1. **与 `ROUND()` 的区别**:
- `ROUND(1.3)` → `1`(四舍五入)
- `CEIL(1.3)` → `2`(强制向上取整)
2. **负数行为**:
`CEIL(-1.3)` 结果为 `-1`(向正无穷方向取整),而非远离零的方向。
3. **性能**:
`CEIL()` 是原生函数,性能优于自定义逻辑。
4. **动态取整**:
若需对查询结果中的多列或动态值取整:
```sql
SELECT CEIL(column1), CEIL(column2 * 1.5) FROM your_table;
```
---
### **推荐方案**
**直接向上取整**:
```sql
SELECT CEIL(your_column) FROM your_table;
```
**需兼容性时**(如某些旧版本MySQL):
```sql
SELECT CEILING(your_column) FROM your_table;
```
---
阅读全文
相关推荐


















