mysql 常用的数学函数:基本运算 四舍五入 取整 幂运算与开方 随机数 对数与整数 三角函数 取模 最大值与最小值 格式化

发布时间:2025-05-13      访问量:21
在 MySQL 中,数学函数用于执行各种数值计算和数据处理。以下是一些常用的数学函数及其功能:


**1. 基本运算函数**
- **`ABS(x)`**
返回数值的绝对值。
```sql
SELECT ABS(-5); -- 输出: 5
```

- **`SIGN(x)`**
返回数值的符号(正数返回 1,负数返回 -1,零返回 0)。
```sql
SELECT SIGN(-3.14); -- 输出: -1
```


**2. 四舍五入与截断**
- **`ROUND(x, d)`**
对数值 `x` 进行四舍五入,保留 `d` 位小数(默认 `d=0`)。
```sql
SELECT ROUND(3.1415, 2); -- 输出: 3.14
```

- **`TRUNCATE(x, d)`**
截断数值 `x` 为 `d` 位小数,不进行四舍五入。
```sql
SELECT TRUNCATE(3.99, 0); -- 输出: 3
```


**3. 取整函数**
- **`FLOOR(x)`**
返回不大于 `x` 的最大整数(向下取整)。
```sql
SELECT FLOOR(3.9); -- 输出: 3
```

- **`CEIL(x)` / `CEILING(x)`**
返回不小于 `x` 的最小整数(向上取整)。
```sql
SELECT CEIL(3.1); -- 输出: 4
```


**4. 幂运算与开方**
- **`POWER(x, y)` / `POW(x, y)`**
返回 `x` 的 `y` 次幂。
```sql
SELECT POWER(2, 3); -- 输出: 8
```

- **`SQRT(x)`**
返回 `x` 的平方根(`x` 需为非负数)。
```sql
SELECT SQRT(16); -- 输出: 4
```


**5. 随机数生成**
- **`RAND()`**
返回 0 到 1 之间的随机浮点数(`0 ≤ RAND() < 1`)。
```sql
SELECT RAND(); -- 例如输出: 0.789342
```

- **生成指定范围的随机整数**
```sql
SELECT FLOOR(RAND() * (b - a + 1)) + a; -- 生成 [a, b] 之间的随机整数
```


**6. 对数与指数**
- **`LOG(x)`**
返回 `x` 的自然对数(以 e 为底)。
```sql
SELECT LOG(EXP(2)); -- 输出: 2
```

- **`LOG10(x)`**
返回 `x` 的常用对数(以 10 为底)。
```sql
SELECT LOG10(100); -- 输出: 2
```

- **`EXP(x)`**
返回 e 的 `x` 次幂。
```sql
SELECT EXP(2); -- 输出: 7.389056
```


**7. 三角函数**
- **`SIN(x)` / `COS(x)` / `TAN(x)`**
返回正弦、余弦、正切值(参数为弧度)。
```sql
SELECT SIN(PI()/2); -- 输出: 1
```

- **`RADIANS(x)` / `DEGREES(x)`**
角度与弧度的转换。
```sql
SELECT RADIANS(180); -- 输出: 3.1415926535898 (π)
```


**8. 取模运算**
- **`MOD(x, y)`** / **`x % y`**
返回 `x` 除以 `y` 的余数。
```sql
SELECT MOD(10, 3); -- 输出: 1
```


**9. 最大值与最小值**
- **`LEAST(value1, value2, ...)`**
返回列表中的最小值。
```sql
SELECT LEAST(3, 1, 4); -- 输出: 1
```

- **`GREATEST(value1, value2, ...)`**
返回列表中的最大值。
```sql
SELECT GREATEST(3, 1, 4); -- 输出: 4
```


**10. 数值格式化**
- **`FORMAT(x, d)`**
将数值格式化为千分位分隔的字符串,保留 `d` 位小数。
```sql
SELECT FORMAT(12345.678, 2); -- 输出: 12,345.68
```


**示例综合应用**
sql -- 计算圆的面积(半径为 5) SELECT ROUND(PI() * POWER(5, 2), 2); -- 输出: 78.54 -- 生成 1 到 100 之间的随机整数 SELECT FLOOR(RAND() * 100) + 1;


**注意事项**
- **参数类型**:部分函数(如三角函数)要求参数为弧度而非角度。
- **性能考虑**:复杂数学运算可能影响查询性能,尽量避免在大表的 `WHERE` 子句中使用函数过滤。

合理使用数学函数可以高效处理数值数据,满足各种计算需求。
堆内存
多线程
strdup
初始化器
冒泡排序
增删改查
BufferedReader
输入输出
面向对象
生命周期
闭包的概念
原型链
Flask
mysql-connector-python
单例模式
浅拷贝
隔离级别
索引
InnoDB
左连接
聚合函数
PuTTY
TRUNCATE
str_starts_with_many
DateTime
array_combine
闭包的概念