1. 算术操作符
可使用常见的算术操作符。注意就 -、 +和 *而言, 若两个参数均为正数,则其计算结果的精确度为 BIGINT (64比特),若其中一个参数为无符号整数, 而其它参数也是整数, 则结果为无符号整数。
+
加号:
mysql> SELECT 3+5; -> 8
-
减号:
mysql> SELECT 3-5; -> -2
-
一元减号。更换参数符号。
mysql> SELECT - 2; -> -2
注意:若该 操作符同一个BIGINT同时使用,则返回值也是一个BIGINT。这意味着你应当尽量避免对可能产生–263的整数使用 –。
*
乘号:
mysql> SELECT 3*5; -> 15 mysql> SELECT 18014398509481984*18014398509481984.0; -> 324518553658426726783156020576256.0 mysql> SELECT 18014398509481984*18014398509481984; -> 0
最后一个表达式的结果是不正确的。原因是整数相乘的结果超过了BIGINT 计算的 64比特范围。
/
除号:
mysql> SELECT 3/5; -> 0.60
被零除的结果为 NULL:
mysql> SELECT 102/(1-1); -> NULL
只有当执行的语境中,其结果要被转化为一个整数时 ,除法才会和 BIGINT 算法一起使用。
p
整数除法。 类似于 FLOOR(),然而使用BIGINT 算法也是可靠的。
mysql> SELECT 5 p 2; -> 2
2. 数学函数
若发生错误,所有数学函数会返回 NULL 。
ABS(X)
返回X 的绝对值。
mysql> SELECT ABS(2); -> 2 mysql> SELECT ABS(-32); -> 32
该函数支持使用BIGINT值。
ACOS(X)
返回X 反余弦, 即, 余弦是X的值。若X 不在-1到 1的范围之内,则返回 NULL 。
mysql> SELECT ACOS(1); -> 0 mysql> SELECT ACOS(1.0001); -> NULL mysql> SELECT ACOS(0); -> 1.5707963267949
ASIN(X)
返回X 的反正弦,即,正弦为X 的值。若X 若X 不在-1到 1的范围之内,则返回 NULL 。
mysql> SELECT ASIN(0.2); -> 0.20135792079033 mysql> SELECT ASIN('foo');+-------------+ | ASIN('foo') | +-------------+ | 0 | +-------------+ 1 row in set, 1 warning (0.00 sec) mysql> SHOW WARNINGS;+---------+------+-----------------------------------------+ | Level | Code | Message | +---------+------+-----------------------------------------+ | Warning | 1292 | Truncated incorrect DOUBLE value: 'foo' | +---------+------+-----------------------------------------+
ATAN(X)
返回X 的反正切,即,正切为X 的值。
mysql> SELECT ATAN(2); -> 1.1071487177941 mysql> SELECT ATAN(-2); -> -1.1071487177941
ATAN(Y,X) , ATAN2(Y,X)
返回两个变量X 及Y的反正切。 它类似于 Y 或 X的反正切计算, 除非两个参数的符号均用于确定结果所在象限。
mysql> SELECT ATAN(-2,2); -> -0.78539816339745 mysql> SELECT ATAN2(PI(),0); -> 1.5707963267949
CEILING(X) CEIL(X)
返回不小于X 的最小整数值。
mysql> SELECT CEILING(1.23); -> 2 mysql> SELECT CEIL(-1.23); -> -1
这两个函数的意义相同。注意返回值会被转化为一个BIGINT。
COS(X)
返回X 的余弦,其中X在弧度上已知。
mysql> SELECT COS(PI()); -> -1
COT(X)
返回X 的余切。
mysql> SELECT COT(12); -> -1.5726734063977 mysql> SELECT COT(0); -> NULL
CRC32(expr)
计算循环冗余码校验值并返回一个 32比特无符号值。若参数为NULL ,则结果为 NULL。该参数应为一个字符串,而且在不是字符串的情况下会被作为字符串处理(若有可能)。
mysql> SELECT CRC32('MySQL'); -> 3259397556 mysql> SELECT CRC32('mysql'); -> 2501908538
DEGREES(X)
返回参数 X, 该参数由弧度被转化为度。
mysql> SELECT DEGREES(PI()); -> 180 mysql> SELECT DEGREES(PI() / 2); -> 90
EXP(X)
返回e的X乘方后的值(自然对数的底)。
mysql> SELECT EXP(2); -> 7.3890560989307 mysql> SELECT EXP(-2); -> 0.13533528323661 mysql> SELECT EXP(0); -> 1
FLOOR(X)
返回不大于X的最大整数值 。
mysql> SELECT FLOOR(1.23); -> 1 mysql> SELECT FLOOR(-1.23); -> -2
注意,返回值会被转化为一个 BIGINT。
FORMAT(X,D)
将数字X 的格式写成'#,###,###.##'格式, 即保留小数点后 D位,而第D位的保留方式为四舍五入,然后将结果以字符串的形式返回。
LN(X)
返回X 的自然对数,即, X 相对于基数e 的对数。
mysql> SELECT LN(2); -> 0.69314718055995 mysql> SELECT LN(-2); -> NULL
这个函数同LOG(X)具有相同意义。
LOG(X) LOG(B,X)
若用一个参数调用,这个函数就会返回X 的自然对数。
mysql> SELECT LOG(2); -> 0.69314718055995 mysql> SELECT LOG(-2); -> NULL
若用两个参数进行调用,这个函数会返回X 对于任意基数B 的对数。
mysql> SELECT LOG(2,65536); -> 16 mysql> SELECT LOG(10,100); -> 2
LOG(B,X) 就相当于 LOG(X) / LOG(B)。
LOG2(X)
返回X 的基数为2的对数。
mysql> SELECT LOG2(65536); -> 16 mysql> SELECT LOG2(-100); -> NULL
对于查出存储一个数字需要多少个比特,LOG2()非常有效。这个函数相当于表达式 LOG(X) / LOG(2)。
LOG10(X)
返回X的基数为10的对数。
mysql> SELECT LOG10(2); -> 0.30102999566398 mysql> SELECT LOG10(100); -> 2 mysql> SELECT LOG10(-100); -> NULL
LOG10(X)相当于LOG(10,X)。
MOD(N,M) , N % M N MOD M
模操作。返回N 被 M除后的余数。
mysql> SELECT MOD(234, 10); -> 4 mysql> SELECT 253 % 7; -> 1 mysql> SELECT MOD(29,9); -> 2