MySQL函数
MySQL中的函数包括:
- 数学函数,
- 字符串函数,
- 日期和时间函数、
- 条件判断函数,
- 系统信息函数和加密函数等其他函数
内容导读
- 了解什么是MySQL的函数
- 掌握各种款等函数的用法
- 掌握各种字科串函数的用法
- 掌握时间和日期函数的用法
- 掌握条件函数的用法
- 掌握系统信息函数的用法
- 掌握加密函数的用法
- 掌握其他特殊函数的用法
数学函数
数学函数主要用来处理数值数据,主要的数学函数有:
- 绝对值函数,
- 三角函数,包括正弦函数,余弦函数,正切函数,余切函数等,对数函数,随机数函数等.
在有错误产生时,数学函数将会返回空值NULL.
绝对值函数 ABS(x)和返回圆周率的函数 Pl()
SELECT ABS(2),ABS(-3.3),ABS(-33);
SELECT pi();
平方根函数 SQRT(x)和求余函数 MOD(x,y)
SELECT SQRT(49),SQRT(2),SQRT(4);
SElECT MOD(31,8),MOD(234,10),MOD(45,5);
获取整数的函数CEIL(x),CEILING(x)和FLOOR(x)
CEIL(x)和 CEILING(x)意义相同退回不小于x的最小整数值返回值转化为一个BIGlNT。
FLOOR(x)返回不大于x的最大整数值返回值转化为一个BJGINT.
SELECT CEIL(-3.35),CEILING(3.35);
SELECT FLOOR(-3.35),FLOOR(3.35);
获取随机数的函数RAND()和RAND(x)
SELECT RAND(),RAND(),RAND();
SELECT RAND(10),RAND(10),RAND(l1);
四舍五入函数 ROUND(x)、 ROUND(x,y)和 TRUNCATE(x,y)
ROUND(x)返回最接近于参数 x 的整数,对 x 值进行四舍五入
ROUND(x,y)返回最接近于参数 x 的数,其值保留到小放点后面 y 位,若 y 为负值,则将保留
x值到小数点左边y位。
SELECT ROUND(-1.14),ROUND(1.67),ROUND(1.11),ROUND(l.66);
SELECT ROUND(l.38,1),ROUND(1.67,0),ROUND(232.38,-1),round(232.38,-2);
TRUNCATE(x,y)返回被舍去至小数点后 y 位的数字 x。若 y 的值为 0,则结果不带有小数点
或不带有小数部分.若 y 设为负数,则截去(归零) X 小数点左起第 y 位开始后面所有低位的值。
mysql> SELECT TRUNCATE(1.31,1),TRUNCATE(199.99,-1);
符号函数SIGN(x)
SIGN(x)返回参数的符号,x的值为负、零或正时返回结果依次为-1、0或1。
SELECT SIGN(-21),SIGN(0),SIGN(21);
幕运算函数POW(x,y),POWER(x,y)和EXP(x)
POW(x,y)或者POWER(x,y)函数返回x的y次乘方的结果值。
SELECT POW(2,2),POWER(2,2),POW(2,-2),POWER(2,-2);
EXP(x)返回e的x乘方后的值。
SELECT EXP(3),EXP(-3),EXP(0);
对数运算函数LOG(x)和 LOG10(x)
LOG(x)返回x的自然对数,x相对于基数e的对数。
SELECT LOG(3), LOG(-3);
LOG10(x)返回x的基数为10的对数。
SELECT LOG10(2), LOG10(100), LOG10(-100);
角度与弧度相互转换的函数RADIANS(x)和DEGREES(x)
RADIANS(x)将参数x由角度转化为弧度。
SELECT RADIANS(90),RADIANS(J80);
DEGREES(x)将参数 x 由弧度转化为角度。
SELECT DEGREES(PI()), DEGREES(Pl() / 2);
正弦函数 SIN(x)和反正强函数 ASIN(x)
SIN(x)返回 x 正弦,其中 x 为弧度值。
SELECT SIN(l), ROUND(SIN(PI()));
ASIN(x)返回 x 的反正弦,即正弦为 x的值.若 x不在- I 到 l 的范围之内 ,则返回 NULL
SELECT ASCN(0.8414709848078965), ASIN(3);
余弦函数 COS(x)和反余弦函数 ACOS(x)
COS(x)返回 x的余弦,其中 x为弧度值。
SELECT COS(0),COS(PI()),COS(1);
SELECT ACOS(l),ACOS(O),
正切函数、 反正切函数和余切函数
TAN(x)返回 x 的正切,其中 x 为给定的弧度值。
ATAN(x)返回 x 的反正切,即正切为 x 的值。
字符串函数
MySQL 中字符串函数有:
- 计算字符串长度 函数、
- 字符串合并函敛、
- 字符串替换函数、
- 字符串比较函数、
- 查找指定字符串位置函数等.
计算字符串字符数的函数和字符串长度的函数
CHAR_LENGTH(str)返回值为字符串 str 所包含的字符个数. 一个多字节字符算作一个单字符。
SELECT CHAR_LENGTH('date');
LENGTH(str)返回值为字符串的字节长度
SELECT LENGTH('date');
**合并字符串函数 CONCAT(s1,s2,……),CONCAT(s1,s2,……) **
CONCAT(S1,s2…)返回结果为连接参数产生的字符串,或许有一个或多个参数。如有任何一个参数为NULL,则返回值为NULL。如果所有参数均为非二进制字符串,则结果为非二进制字符串。如果自变量中含有任一二进制字符串,则结果为一个二进制字符串。
SELECT CONCAT('MySQL','5.6');
CONCAT_WS(x,sl,s2,……),CONCAT_WS代表CONCAT WITH Separator是CONCAT()的特殊形式.第一个参数x是其他参数的分隔符
SELECT CONCAT_WS('-','1','2','3');
替换字符串的函数INSERT(s1,x,len,s2)
INSERT(S1,x,len,s2)返回字符串s1,其子字符串起始于x位置和被字符串s2取代的len字符。如果x超过字符串长度,则返回值为原始字符串。假如len的长度大于其他字符串的长度,则从位置x开始替换。若任何一个参数为NULL,则返回值为NULL。
SELECT INSERT('Quest', 2, 4,'What') AS coll;
–将"Quest"第2个字符开始长度为4的字符串替换为what
字母大小写转换函数
LOWER(str)的或者LCASE(str)可以将字符str中的字部字符全部转换成小写字母
select LOWER('AAA'),LCASE('BBB');
UPPER(str)或者UCASE(Str)可以将字符串str中的字母字符全部转换成大写字母。
select UPPER('aaa'),UCASE('bbb');
获取指定长度的字符串的函数LEFT(s,n)和RIGHT(s,n)
LEFT(s,n)返回字符串s开始的最左边n个字符
RIGHT(s,n)返回字符串str最右边n个字符。
SELECT LEFT('football',4);
SELECT RIGHT('football',4);
填充字符串的函数LPAD(剖,len,s2)和 RPAD(剖,len,s2)
LPAD(S1,len,s2)返回字符串s1,其左边由字符串s2填补到len字符长度。假如sl的长度大于len,则返回值被缩短至len字符
RPAD(s1,len,s2)返回字符串sl,其右边被字符串s2填补至len字符长度. 假如字符串sl的长度大于len,则返回值被缩短到len字符长度。
SELECT LPAD('hello',4,'aa',LPAD('hello',10,'aa');
SELECT RPAD('hello',4,'aa',RPAD('hello',10,'aa');
删除空格的函数LTRIM(s)、RTRIM(s)和TRIM(s)
LTRIM(s)返回字符串s,字符串左侧空格字符被删除。
RTRIM(s)返回字符串s,字符串右侧空格字符被删除。
TRIM(s)删除字符串s两侧的空格
select LTRIM(' book ');
select RTRIM(' book ');
select TRIM(' book ');
**删除指定字符串的函数TRIM(s1FROM s) **
TRIM(sl FROM s)删除字符串s中两端所有的子字符串sl。sl为可选项,在未指定情况下, 删除空格。
SELECT TRJM('xy' FROM 'xyxboxyok:xxyxy');
**重复生成字符串的函数REPEAT(s,n) **
REPEAT(s,n)返回一 个由重复的字符串s组成的字符串, 字符串s的数目等于n。若n<=O,则返回一个空字符串。若s或n为NULL,则返回NULL
SELECT REPEAT('MySQL',3);
空格函数SPACE(n)和替换函数REPLACE(s,s1,s2)
SPACE(n)返回一个由n个空格组成的字符串 .
select SPACE(6);
REPLACE(s,s 1,s2)使用字符巨归 s2替代字符串s中所有的字符串sl。
SELECT REPLACE('xxx.mysql.com','x','w');
比较字符串大小的函数STRCMP(s1,s2)
STRCMP(sl,s2)若所有的字符串均相同,则返回0;
若根据当前分类次序,第一个参数小于第二个,则返回-1,其他情况返回1。
SELECT STRCMP('txt','txt2'),STRCMP('txt2','txt'), STRCMP('txt','txt');
获取子串的函数SUBSTRING(s,n,len)和MID(s,n,len)
SUBSTRING(S,n,len)带有len参数的格式,从字符串s返回一个长度同len字符相同的子字符串,起始于位置n。也可能对n使用一个负值。假若这样,则子字符串的位置起始于字符串结尾的n字符,即倒数第n个字符,而不是字符串的开头位置。
SELECT SUBSTRING('breakfast' ,5) AS coll;
MID(s,n,Ien)与SUBSTRING(s,n,len)的作用相同。
SELECT MID('breakfast' ,5) AS coll;
匹配子串开始位置的函数
LOCATE(str1,str),POSITION(strl IN str)和INSTR(str, strl)3个函数作用相同,
返回子字符串 str1在字符串str中的开始位置。
SELECT LOCATE('ball','football'),
POSITION('ball' in 'football'),
INSTR('football', 'ball');
字符串逆序的函数REVERSE(s)
REVERSE(S)将字符串s反转,返回的字符串的顺序和s字符串顺序相反。
SELECT REVERSE('abc');
返回指定位置的字符串的函数
ELT(N,字符串1,字符串2,字符串3.…,字符串N)若N=1,则返回值为字符串1,若N=2,则返回值为字符串2,以此类推。若N小于1或大于参数的数目,则返回值为NULL。
SELECT ELT(3,'lst','2nd','3rd');
返回指定字符串位置的函数 FIELD(s,s1 ,s2,…)
FIELD(S,s1,s2.…)返回字符串s在列表sl,s2……中第一次出现的位置,在找不到s的情况下,返回值为0。如果s为NULL,则返回值为0,原因是NULL不能同任何值进行同等比较。
SELECT FIELD('Hi','hihi','Hey','Hi','bas')as coll;
返回子串位置的函数 FIND_IN_SET(s1 ,s2)
FIND_IN_SET(S1,,s2)返回字符串sl在字符串列表s2中出现的位置,字符串列表是一个由多个逗号‘,分开的字符串组成的列表。如果sl不在s2或s2为空字符串,则返回值为0.如果任意一个参数为NULL,则返回值为NULL。这个函数在第一个参数包含一个返号‘,时将无法正常运行。
SELECT FIND_IN_SET('Hi','hihi','HeyHi','Hi','bas')as coll;
选取字符串的函数MAKE_SET(x,s1,s2,…)
MAKE_SET(x,sl,s2,…)返回由x的二进制数指定的相应位的字符串组成的字符串, sl对应比特l, s2对应比特01,以此类推。sI , s2 …中的NU LL值不会被添加到结果中。
SELECT MAKE_SET(l,'a','b');
##日期和时间函数##
获取当前日期的函数和获取当前时闸的函数
CURDATEO和CURRENT_DATEO函数作用相同,将当前日期按照‘YYYY-MM-DD’或YYYYMMDD格式的值返回,具体格式根据函数在字符串或是数字语境中而定。
SELECT CURDATE(),CURRENT_DATE(),CURDATE()+0;