MySQL数学函数

MySQL提供了丰富的数学函数,用于各种数值计算操作。这些函数可以在SELECT语句中使用,也可以在其他SQL语句中使用。本章将详细介绍MySQL中常用的数学函数及其用法。

基本数学函数

以下是MySQL中最常用的基本数学函数:

函数 描述 示例
ABS(x) 返回x的绝对值 ABS(-10) = 10
CEIL(x) 返回大于或等于x的最小整数 CEIL(4.2) = 5
FLOOR(x) 返回小于或等于x的最大整数 FLOOR(4.8) = 4
ROUND(x) 将x四舍五入为整数 ROUND(4.5) = 5
ROUND(x, d) 将x四舍五入到小数点后d位 ROUND(4.567, 2) = 4.57
TRUNCATE(x, d) 将x截断到小数点后d位 TRUNCATE(4.567, 2) = 4.56
MOD(x, y) 返回x除以y的余数 MOD(10, 3) = 1
POW(x, y) 返回x的y次方 POW(2, 3) = 8
SQRT(x) 返回x的平方根 SQRT(16) = 4
EXP(x) 返回e的x次方 EXP(1) ≈ 2.718
LN(x) 返回x的自然对数 LN(2.718) ≈ 1
LOG10(x) 返回x的以10为底的对数 LOG10(100) = 2

三角函数

MySQL支持以下三角函数:

函数 描述 示例
SIN(x) 返回x的正弦值,x以弧度表示 SIN(PI()/2) = 1
COS(x) 返回x的余弦值,x以弧度表示 COS(0) = 1
TAN(x) 返回x的正切值,x以弧度表示 TAN(PI()/4) = 1
ASIN(x) 返回x的反正弦值,结果以弧度表示 ASIN(1) = PI()/2
ACOS(x) 返回x的反余弦值,结果以弧度表示 ACOS(1) = 0
ATAN(x) 返回x的反正切值,结果以弧度表示 ATAN(1) = PI()/4
ATAN2(y, x) 返回y/x的反正切值,结果以弧度表示 ATAN2(1, 1) = PI()/4
RADIANS(x) 将角度转换为弧度 RADIANS(180) = PI()
DEGREES(x) 将弧度转换为角度 DEGREES(PI()) = 180

随机数函数

MySQL提供了生成随机数的函数:

函数 描述 示例
RAND() 返回0到1之间的随机浮点数 RAND() ≈ 0.5234
RAND(seed) 使用seed作为种子生成随机数 RAND(123) 每次都返回相同的结果

示例:使用数学函数

下面是一些使用数学函数的实际示例:

-- 计算绝对值
SELECT ABS(-15) AS abs_value;

-- 四舍五入到2位小数
SELECT ROUND(3.1415926, 2) AS pi_rounded;

-- 计算平方根
SELECT SQRT(25) AS square_root;

-- 生成0到100之间的随机整数
SELECT FLOOR(RAND() * 100) AS random_number;

-- 计算三角函数值
SELECT SIN(RADIANS(30)) AS sin_30_degrees;

-- 计算表达式
SELECT POW(2, 10) + SQRT(100) AS result;

聚合数学函数

除了上述函数外,MySQL还提供了用于统计计算的聚合函数,这些函数通常与GROUP BY子句一起使用:

函数 描述
AVG(expr) 计算平均值
SUM(expr) 计算总和
MIN(expr) 找出最小值
MAX(expr) 找出最大值
COUNT(expr) 计算行数

提示:在使用数学函数时,请注意数据类型的范围。某些函数可能会返回超出数值类型范围的结果,导致数据溢出错误。如果需要处理非常大的数值,可以考虑使用DECIMAL数据类型。