表12.10数学函数
的名字 | 描述 |
---|---|
ABS() |
返回绝对值 |
ACOS() |
返回弧余弦 |
Asin() |
返回弧形正弦 |
(每股) |
返回arctan |
量化() ,(每股) |
返回两个参数的反正切 |
装天花板() |
返回最小的整数值,不小于参数 |
天花板() |
返回最小的整数值,不小于参数 |
CONV () |
在不同的数基之间转换数 |
Cos() |
返回余弦 |
COT() |
返回余切 |
CRC32 () |
计算循环冗余校验值 |
Degle() |
将弧度转换为度 |
EXP () |
提升到…的力量 |
地板() |
返回不大于实参的最大整数值 |
LN () |
返回参数的自然对数 |
日志() |
返回第一个参数的自然对数 |
log10() |
返回参数的基本-10对数 |
LOG2 () |
返回参数的以2为底的对数 |
国防部() |
返回余数 |
π() |
返回pi的值 |
战俘() |
将提升到指定电源的参数返回 |
权力() |
将提升到指定电源的参数返回 |
弧度() |
返回参数转换为弧度 |
RAND () |
返回一个随机浮点值 |
圆形的() |
在论证 |
(标志) |
返回参数的符号 |
SIN () |
返回参数的正弦值 |
SQRT () |
返回参数的平方根 |
谭() |
返回论证的切线 |
截断() |
截断到指定的小数位数 |
所有的数学函数都会返回零
如果发生错误。
的绝对值
X
,或零
如果X
是零
。结果类型派生自实参类型。其中的一个含义是
ABS (-9223372036854775808)
产生错误,因为结果不能存储在有符号的长整型数字
价值。mysql >选择ABS (2);mysql> SELECT ABS(-32);- > 32
使用此功能可安全使用
长整型数字
值。的反余弦
X
,也就是说,余弦的价值是X
。返回零
如果X
不在射程内1
来1
。mysql >选择治疗(1);-> 0 mysql> SELECT ACOS(1.0001)-> NULL mysql> SELECT ACOS(0);- > 1.5707963267949
返回的反正弦
X
,也就是sin的值X
。返回零
如果X
不在射程内1
来1
。MySQL>选择ASIN(0.2);- > 0.20135792079033 mysql>选择Asin('foo');+ ------------- + |Asin('foo')|+ ------------- + |0 |+ -------------- + 1行,1条警告(0.00秒)MySQL> Show Warnings;+ --------- + ------ + ------------------------------------------------- + |水平|代码| Message | +---------+------+-----------------------------------------+ | Warning | 1292 | Truncated incorrect DOUBLE value: 'foo' | +---------+------+-----------------------------------------+
的反正切
X
,即其正切值X
。mysql >选择:(2);-> 1.1071487177941 mysql> SELECT ATAN(-2)- > -1.1071487177941
返回两个变量的反正切值
X
和Y
。它类似于计算的反正切
,除了两个参数的符号都用于确定结果的象限。Y
/X
mysql >选择:(2,2);> -0.78539816339745 mysql> SELECT ATAN2(PI(),0);- > 1.5707963267949
返回不小于的最小整数值
X
。mysql >选择上限(1.23);-> 2 mysql> SELECT CEILING(-1.23);- > 1
对于精确数值参数,返回值具有精确数值类型。对于字符串或浮点参数,返回值为浮点类型。
在不同的数基之间转换数。返回数字的字符串表示形式
N
,由基底转换from_base
基地to_base
。返回零
如果有任何争论零
。这个论点N
被解释为整数,但可以指定为整数或字符串。最小基数是2
最大底是36
。如果from_base
是一个负数,N
视为有符号数。否则,N
被视为无符号。CONV ()
工作与64位精度。mysql >选择CONV (' a ', 16日2);-> '1010' mysql> SELECT CONV('6E',18,8);-> '172' mysql> SELECT CONV(-17,10,-18);- > - h的mysql >选择CONV(10 + 10”+“10”+ X ' 0 ', 10、10);——>“40”
返回的cos
X
,在那里X
以弧度表示。mysql >选择COS(π());- > 1
的余切值
X
。mysql >选择床(12);-> -1.5726734063977 mysql> SELECT COT(0);- >超出范围错误
计算一个循环冗余校验值并返回一个32位的无符号值。结果是
零
如果参数是零
。参数应该是一个字符串,如果不是的话(如果可能的话)将被视为一个字符串。mysql >选择CRC32 (mysql);-> 3259397556 mysql> SELECT CRC32('mysql');- > 2501908538
返回参数
X
,从弧度转换为角度。mysql >选择度(π());-> 180 mysql> SELECT DEGREES(PI() / 2);- > 90
返回值e(自然对数的底)的幂
X
。这个函数的倒数是日志()
(仅使用单个参数)或LN ()
。MySQL> Select Exp(2);- > 7.3890560989307 MySQL> Select Exp(-2);- > 0.13533528323661 MySQL> Select Exp(0);- > 1
返回不大于的最大整数值
X
。mysql> SELECT FLOOR(1.23), FLOOR(-1.23);- > 1, 2
对于精确数值参数,返回值具有精确数值类型。对于字符串或浮点参数,返回值为浮点类型。
格式数量
X
到类似于'#,###,###.##'
,四舍五入D
十进制的位置,并将结果作为字符串返回。有关详细信息,请参阅第12.8节,字符串函数和操作符。此函数可用于获得十进制数或字符串的十六进制表示;这样做的方式根据参数的类型而不同。中对该函数的描述第12.8节,字符串函数和操作符的细节。
的自然对数
X
;也就是碱e的对数X
。如果X
小于等于0。0e0,函数返回零
和一个警告”对对数无效的参数”据报道。mysql >选择LN (2);-> 0.69314718055995 mysql> SELECT LN(-2)- >零
如果用一个参数调用,则此函数返回自然对数
X
。如果X
小于等于0。0e0,函数返回零
和一个警告”对对数无效的参数”据报道。此功能的倒数(用单个参数调用时)是
EXP ()
函数。mysql >选择日志(2);-> 0.69314718055995 mysql> SELECT LOG(-2)- >零
如果调用时带有两个参数,则该函数返回的是的对数
X
的基础B
。如果X
小于等于0,或者B
小于等于1零
返回。MySQL>选择日志(2,65536);- > 16 mysql>选择log(10,100);- > 2 mysql>选择log(1,100);- >零
返回以2为底的对数
。如果X
X
小于等于0。0e0,函数返回零
和一个警告”对对数无效的参数”据报道。mysql >选择LOG2 (65536);-> 16 mysql> SELECT LOG2(-100);- >零
LOG2 ()
对于找出一个数字需要多少位来存储是有用的。这个函数等价于这个表达式日志(
。X
) /日志(2)返回以10为底的对数
X
。如果X
小于等于0。0e0,函数返回零
和一个警告”对对数无效的参数”据报道。mysql>选择log10(2);- > 0.30102999566398 mysql>选择log10(100);- > 2 mysql>选择log10(-100);- >零
模操作。返回
N
除以米
。MySQL> Select Mod(234,10);- > 4 mysql>选择253%7;- > 1 mysql>选择mod(29,9);- > 2 mysql>选择29 mod 9;- > 2
使用此功能可安全使用
长整型数字
值。国防部()
也适用于有小数部分的值,并在除法后返回精确的余数:mysql >选择MOD (34.5, 3);- > 1.5
国防部(
返回N
,0)零
。返回π的值。默认显示的小数点位数是7,但是MySQL内部使用完整的双精度值。
mysql>选择pi();- > 3.141593 MySQL> Select Pi()+ 0.00000000000000000000;- > 3.141592653589793116.
返回值
X
提升到…的能力Y
。mysql >选择战俘(2,2);-> 4 mysql> SELECT POW(2, 2);- > 0.25
这是…的同义词
战俘()
。返回参数
X
,从角度转换为弧度。(注意π弧度等于180度。)mysql >选择弧度(90);- > 1.5707963267949
返回随机浮点值
v
范围内0
<=v
<1.0
。获取随机整数R
范围内我
<=R
<j
,使用表达式楼(
−我
+ rand()*(j
。例如,获取范围内的一个随机整数我
))7
<=R
<12
,使用以下语句:Select floor (7 + (rand () * 5));
如果是整型参数
N
指定,它用作种子值:如果使用常量初始化器参数,则在语句准备就绪时(在执行之前)初始化种子一次。
使用一个非常量初始化器参数(例如列名),种子将用每次调用的值初始化
RAND ()
。
这种行为的一个含义是,对于相等的论证值,
兰特(
每次返回相同的值,从而产生一个可重复的列值序列。在下面的例子中,由产生的值序列N
)兰特(3)
它发生的两个地方都是一样的。mysql> CREATE TABLE t (i INT);mysql> INSERT INTO t VALUES(1),(2),(3);mysql> SELECT i, RAND() FROM t; mysql> SELECT i, RAND() FROM t;+------+------------------+ | 我|兰德 () | +------+------------------+ | 1 | 0.61914388706828 | | 2 | 0.93845168309142 | 0.83482678498591 | 3 | | +------+------------------+ 3行集(0.00秒)mysql >选择我,从t兰德(3);+------+------------------+ | 我|兰德(3 ) | +------+------------------+ | 1 | 0.90576975597606 | | 2 | 0.37307905813035 | 0.14808605345719 | 3 | | +------+------------------+ 3行集(0.00秒)mysql >选择我,从t RAND ();+------+------------------+ | 我|兰德 () | +------+------------------+ | 1 | 0.35877890638893 | | 2 | 0.28941420772058 | 0.37073435016976 | 3 | | +------+------------------+ 3行集(0.00秒)mysql >选择我,从t兰德(3);+------+------------------+ | 我|兰德(3 ) | +------+------------------+ | 1 | 0.90576975597606 | | 2 | 0.37307905813035 | 0.14808605345719 | 3 | | +------+------------------+ 3行集(0.01秒)
RAND ()
在一个在哪里
子句对每一行(从一个表中选择时)或行组合(从多表连接中选择时)进行计算。因此,为了优化,RAND ()
不是常量值,不能用于索引优化。有关更多信息,请参阅第8.2.1.18节,“函数调用优化”。使用列与
RAND ()
值在一个命令
或集团
子句可能会产生意想不到的结果,因为对于任意一个子句aRAND ()
表达式可以为同一行计算多次,每次返回不同的结果。如果目标是按随机顺序检索行,你可以使用这样的语句:SELECT * FROMtbl_nameORDER BY RAND ();
若要从一组行中选择一个随机样本,请进行组合
ORDER BY RAND ()
与限制
:选择*从table1,table2,其中a = b和c rand()限制1000;
RAND ()
并不意味着是一个完美的随机发生器。这是一种快速的方法,可以根据需要在同一MySQL版本的平台之间移植的随机数。基于语句的复制,此功能不安全。如果使用此功能,则记录警告
binlog_format.
设定为声明
。轮的参数
X
来D
位小数。的数据类型决定舍入算法X
。D
如果没有指定,默认为0。D
会不会是阴性引起的D
数值的小数点左边的数字X
成为零。的最大绝对值D
是30;任何超过30(或-30)的数字都会被截断。mysql >选择圆(-1.23);-> -1 mysql> SELECT ROUND(-1.58);-> -2 mysql> SELECT ROUND(1.58)mysql> SELECT ROUND(1.298, 1);mysql> SELECT ROUND(1.298, 0);mysql> SELECT ROUND(23.298, -1);-> 20 mysql> SELECT ROUND(。12345678901234567890123456789012345, 35); -> 0.123456789012345678901234567890
返回值与第一个参数具有相同的类型(假设它是整数、双精度或十进制)。这意味着对于整数参数,结果是一个整数(没有小数点):
mysql> SELECT ROUND(150.000,2), ROUND(150,2);+------------------+--------------+ | 轮(150.000,2)|(150年,2 ) | +------------------+--------------+ | 150.00 | 150 | +------------------+--------------+
圆形的()
根据第一个参数的类型使用以下规则:下面的例子展示了精确值和近似值的舍入差异:
mysql> SELECT ROUND(2.5), ROUND(25E-1);+------------+--------------+ | (25 e 1(2.5) |轮 ) | +------------+--------------+ | 3 | 2 | +------------+--------------+
有关更多信息,请参阅第12.22节,“精确数学”。
返回参数的标志
1
,0
,或1
,取决于是否X
是负的,零的,还是正的。mysql >选择信号(-32);-> -1 mysql> SELECT SIGN(0);-> 0 mysql> SELECT SIGN(234)- > 1
返回的正弦值
X
,在那里X
以弧度表示。mysql >选择罪(π());-> 1.2246063538224e-16 mysql> SELECT ROUND(SIN(PI()));- > 0
返回非负数的平方根
X
。mysql >选择SQRT (4);-> 2 mysql> SELECT SQRT(20);-> 4.4721359549996 mysql> SELECT SQRT(-16);- >零
返回的正切
X
,在那里X
以弧度表示。mysql >选择TAN(π());-> -1.2246063538224e-16 mysql> SELECT TAN(PI()+1);- > 1.5574077246549
返回数字
X
,截断到D
位小数。如果D
是0
,结果没有小数点或小数部分。D
会不会是阴性引起的D
数值的小数点左边的数字X
成为零。mysql >选择截断(1.223,1);-> 1.2 mysql> SELECT TRUNCATE(1.999,1);> 1.9 mysql> SELECT TRUNCATE(1.999,0);mysql> SELECT TRUNCATE(-1.999,1);-> -1.9 mysql> SELECT TRUNCATE(122,-2)-> 100 mysql> SELECT TRUNCATE(10.28*100,0);- > 1028
所有数字都四舍五入到零。