手记

八月MySQL之常用函数总结

文章开始之前,先吐槽一下慕课网的手记编辑器,虽然采用的是Markdown语法编辑,但是支持的语法,实在是不够完善。尤其是表格,辛辛苦苦的弄了几个小时,预览也能够查看准确的效果,但是发布后,竟然没有解析出来,导致格式全部混乱了,又得重新编辑……希望慕课能早日解决这个问题,如果不支持,就不要预览显示出来,否则一旦发布,就全白忙活了。好了,吐槽结束,下面开始正文。

昨天复习了一下MySQL的常用数据类型,今天对MySQL的常用函数进行总结。

字符串函数

CONCAT(str1,str2,...)

说明:连接str1,str2……为一个字符串。注意:任何字符串与NULL进行连接的结果都将是NULL。例如:

select CONCAT('ab','cd','ef'); -- 结果:abcdef
select CONCAT('ab','cd',null); -- 结果:NULL

INSERT(str,pos,len,newstr)

说明:用于字符串的替换,将字符串str从第pos位置(首位是1)开始,长度为len的子字符串,替换为字符串newstr。例如:

select INSERT('abcdef',1,4,'wwwwwww'); -- 结果: wwwwwwwef

LOWER(str)

说明:将字符串str转换为小写。例如:

select LOWER('Abc'); -- 结果:abc

UPPER(str)

说明:将字符串str转换为大写。例如:

select UPPER('Abc'); -- 结果:ABC 

LEFT(str,len)

说明:返回字符串str最左边的len个字符,如果长度指定为NULL,结果将会返回NULL(mysql 5.7) 。例如:

select LEFT('abcdef',2); -- 结果:ab

RIGHT(str,len)

说明:返回字符串str最右边的len个字符。例如:

select RIGHT('abcdef',2);  -- 结果:ef

LPAD(str,len,padstr)

说明:使用字符串padstr对原字符串str最左边进行填充,直到总的字符串长度为len。例如:

select LPAD('a',10,'1'); -- 结果:111111111a  

RPAD(str,len,padstr)

说明:使用字符串padstr对原字符串str最右边进行填充,直到总的字符串长度为len。例如:

select RPAD('a',10,1); -- 说明:a111111111  

LTRIM(str)

说明:去除字符串str左侧的空格


RTRIM(str)

说明:去除字符串str行尾的空格


REPEAT(str,count)

说明:返回str重复count次的结果。例如:

select REPEAT('good',2); --  结果:goodgood  

REPLACE(str,from_str,to_str)

说明:将字符串str中的所有出现的字符串from_str,替换成为to_str。例如:

select REPLACE('hello','l','x'); -- 结果:hexxo  

STRCMP(expr1,expr2)

说明:比较字符串expr1和expr2的ASCII码值的大小,expr1>expr2返回1;expr1=expr2返回0;expr1<expr2返回-1。例如:

select STRCMP('a','b'); --  结果:-1
SELECT STRCMP('c','b');  -- 结果:1
select STRCMP('a','a');  -- 结果:0

TRIM([remstr FROM] str)

说明:去掉字符串首尾空格


SUBSTRING(str,pos,len)

说明:截取字符串,返回从字符串str的pos位置开始(从1开始),len个字符长度的字符串。例如:

select SUBSTRING('abcdefg',1,3);  --   结果:abc 

数值函数

ABS(X)

说明:返回数值X的绝对值。例如:

select ABS(-12); -- 结果: 12

CEIL(X)

说明:返回大于数值X的最小整数值。例如:

select CEIL(1.23); --结果:2

FLOOR(X)

说明:返回小于数值X的最大整数值。例如:

select FLOOR(1.23); -- 结果:1

MOD(N,M)

说明:返回N/M的模(取余数),如果有一个数为NULL,结果都为NULL。例如:

select MOD(5,2); -- 结果:1
select MOD(5,null);  -- 结果:NULL

RAND()

说明:返回0~1内的随机值。例如:

select RAND();  -- 结果:0.1409339421809967

ROUND(X,D)

说明:返回数值X的四舍五入值,保留D位小数,如果不写D,默认为0,四舍五入后取整。例如:

select ROUND(1.6723,1); -- 结果:1.7

TRUNCATE(X,D)

说明:返回数值X截断为D位小数的结果,不会四舍五入,直接截断小数位。例如:

select TRUNCATE(1.21556,3); -- 结果:1.215

日期和时间函数

CURDATE()

说明:返回当前日期。例如:

select CURDATE(); -- 结果:2016-08-05

CURTIME()

说明:返回当前时间。例如:

select CURTIME();  -- 结果:20:35:56

NOW()

说明:返回当前的日期和时间。例如:

select NOW();  -- 结果:2016-08-05 20:36:16

UNIX_TIMESTAMP([date])

说明:返回日期date的UNIX时间戳,如果不指定date,默认是当前时间的UNIX时间戳。例如:

select UNIX_TIMESTAMP();  -- 结果:1470387231

FROM_UNIXTIME(unix_timestamp)

说明:返回UNIX时间戳的日期值,和UNIX_TIMESTAMP互为逆操作。例如:

select FROM_UNIXTIME(1470387231);  -- 结果:2016-08-05 20:36:16

WEEK(date[,mode])

说明:返回日期date为一年中的第几周。例如:

select WEEK(NOW()); -- 结果:31

YEAR(date)

说明:返回日期date的年份。例如:

select YEAR(NOW()); -- 结果:2016

HOUR(time)

说明:返回time的小时值。例如:

select  HOUR(NOW());  -- 结果:20

MINUTE(time)

说明:返回time的分钟值。例如:

select MINUTE(NOW());

MONTHNAME(date)

说明:返回date的英文月份名。例如:

select MONTHNAME(NOW());  -- 结果:August

DATE_FORMAT(date,format)

说明:返回按字符串format格式化日期date值。例如:

select DATE_FORMAT(NOW(),'%Y:%D:%M');  -- 结果:2016:8th:August

DATE_ADD(date,INTERVAL expr unit)

说明:返回一个日期或时间值加上一个时间间隔的值。INTERVAL 是间隔类型关键字,expr是一个表达式,对应后面的类型,unit是间隔类型。例如:

select DATE_ADD(NOW(),INTERVAL 2 DAY); -- 在今天加2天,如果输入负数就表示之前,结果:2016-08-07 20:46:19
select DATE_ADD(NOW(),INTERVAL '-2_3' YEAR_MONTH); -- 在当前时间减去2年3个月,即返回2年3个月前的的时间,结果:2014-05-05 20:46:36

DATEDIFF(expr1,expr2)

说明:返回起始时间expr1和结束时间expr2之间的天数。例如:

select DATEDIFF('2016-8-10',NOW());  -- 结果:5

其他常用函数

DATABASE()

说明:返回当前数据库名。例如:

select DATABASE();

VERSION()

说明:返回当前数据库版本。例如:

select VERSION(); -- 结果:5.7.12-log

USER()

说明:返回当前登录用户名。例如:

select USER(); -- 结果:root@localhost

INET_ATON(expr)

说明:返回IP地址的网络字节序表示,该函数主要用于IP的比较和查询,可以用来确定IP范围,避免IP中的字符“.”进行比较导致的错误。例如:

select INET_ATON('10.100.0.0');  -- 结果:174325760

INET_NTOA(expr)

说明:返回网络字节序数值代表的IP地址。 例如:

 select INET_NTOA(174325760); -- 结果: 10.100.0.0

PASSWORD(str)

说明:返回字符串str的加密版本。 例如:

select PASSWORD('abc');  -- 结果:  *0D3CED9BEC10A777AEC23CCC353A8C08A633045E

MD5(str)

说明:返回字符串str的MD5值。 例如:

select MD5('abc');  -- 结果: 900150983cd24fb0d6963f7d28e17f72

(持续更新……)

OK,以上就是今天总结的内容,花了几个小时的时间,终于弄好了这篇手记,设置好了自己喜欢的样式。
关于函数目前先记录这么多,后期有遇到再陆续补充。

3人推荐
随时随地看视频
慕课网APP