MySQL 常用函数

字符串函数

-- CONCAT(S1,S2,…Sn)函数:把传入的参数连接成为一个字符串。任何字符串与NULL进行连接的结果都将是NULL。
select concat('aaa', 'bbb', 'ccc') ,concat('aaa',null); -- aaabbbccc,null

-- INSERT(str,x,y,instr)函数:将字符串str从第x位置开始,y个字符长的子串替换为字符串instr。
select INSERT('beijing2008you',12,3, 'me');-- beijing2008me

-- LOWER(str)和UPPER(str)函数:把字符串转换成小写或大写。
select LOWER('BEIJING2008'), UPPER('beijing2008');-- beijing2008,BEIJING2008

-- LEFT(str,x)和RIGHT(str,x)函数:分别返回字符串最左边的x个字符和最右边的x个字符。如果第二个参数是NULL,那么将不返回任何字符串。
SELECT LEFT('beijing2008',7),LEFT('beijing',null),RIGHT('beijing2008',4);-- beijing,null,2008

-- LPAD(str,n,pad)和RPAD(str,n,pad)函数:用字符串pad对str最左边和最右边进行填充,直到长度为n个字符长度。
select lpad('2008',20,'beijing'),rpad('beijing',20,'2008');-- beijingbeijingbe2008,beijing2008200820082

-- LTRIM(str)和RTRIM(str)函数:去掉字符串str左侧和右侧空格。
select ltrim('  beijing'),rtrim('beijing  ');-- beijing,beijing

-- REPEAT(str,x)函数:返回str重复x次的结果。
select repeat('mysql ',3);-- mysql mysql mysql 

-- REPLACE(str,a,b)函数:用字符串b替换字符串str中所有出现的字符串a。
select replace('beijing_2010','_2010','2008');-- beijing2008

-- STRCMP(s1,s2)函数:比较字符串s1和s2的ASCII码值的大小。
select strcmp('a','b'),strcmp('b','b'),strcmp('c','b');-- -1,0,1

-- TRIM(str)函数:去掉目标字符串的开头和结尾的空格。
select trim(' $ beijing2008 $ ');-- $ beijing2008 $

-- SUBSTRING(str,x,y)函数:返回从字符串str中的第x位置起y个字符长度的字串。
select substring('beijing2008',8,4),substring('beijing2008',1,7);-- 2008,beijing

 

 

 

数值函数

-- ABS(x)函数:返回x的绝对值。
select ABS(-0.8) ,ABS(0.8); -- 0.8,0.8

-- CEIL(x)函数:返回大于x的最小整数。
select CEIL(-0.8),CEIL(0.8);-- 0,1

-- FLOOR(x)函数:返回小于x的最大整数,和CEIL的用法刚好相反。
select FLOOR(-0.8), FLOOR(0.8);-- -1,0

-- MOD(x,y)函数:返回x/y的模。
select MOD(15,10),MOD(1,11),MOD(NULL,10);-- 5,1,null

-- RAND()函数:返回0~1内的随机值。
select RAND(),RAND();-- 0.9192258947707954,0.7775240370794423
-- 利用此函数可以取任意指定范围内的随机数,比如需要产生 0~100 内的任意随机整数
select ceil(100*rand()),ceil(100*rand());-- 20,3

-- ROUND(x,y)函数:返回参数x的四舍五入的有y位小数的值。
select ROUND(11.11),ROUND(11.11,2),ROUND(11,2);-- 11,11.11,11

-- TRUNCATE(x,y)函数:返回数字x截断为y位小数的结果。
select ROUND(1.235,2),TRUNCATE(1.235,2);-- 1.24,1.23

 

日期和时间函数

 

 

 

 

 

-- CURDATE()函数:返回当前日期,只包含年月日。
select CURDATE(); -- 2021-01-06

-- CURTIME()函数:返回当前时间,只包含时分秒。
select CURTIME(); -- 10:57:35

-- NOW()函数:返回当前的日期和时间,年月日时分秒全都包含。
select NOW(); -- 2021-01-06 10:58:14

-- UNIX_TIMESTAMP(date)函数:返回日期date的UNIX时间戳。
select UNIX_TIMESTAMP(now()); -- 1609901920

-- FROM_UNIXTIME(unixtime)函数:返回 UNIXTIME 时间戳的日期值,和UNIX_TIMESTAMP(date)互为逆操作。
select FROM_UNIXTIME(1609901920);-- 2021-01-06 10:58:40

-- WEEK(DATE)和 YEAR(DATE)函数:前者返回所给的日期是一年中的第几周,后者返回所给的日期是哪一年。
select WEEK(now()),YEAR(now());-- 1,2021
-- HOUR(time)和MINUTE(time)函数:前者返回所给时间的小时,后者返回所给时间的分钟。
select HOUR(CURTIME()),MINUTE(CURTIME());-- 11,0

-- MONTHNAME(date)函数:返回date的英文月份名称。
select MONTHNAME(now());-- January

-- DATE_FORMAT(date,fmt)函数:按字符串 fmt 格式化日期 date 值,此函数能够按指定的格式显示日期,可以用到的格式符如表所示。
select DATE_FORMAT(now(),'%M,%D,%Y');-- January,6th,2021
select DATE_FORMAT(now(),'%Y-%m-%d %H:%i:%s');-- 2021-01-06 11:05:14

-- DATE_ADD(date,INTERVAL expr type)函数:返回与所给日期date相差 INTERVAL时间段的日期。
-- 其中INTERVAL是间隔类型关键字,expr是一个表达式,这个表达式对应后面的类型, type是间隔类型,MySQL提供了13种间隔类型,如表所示。
select now() current,date_add(now(),INTERVAL 31 day) after31days,date_add(now(),INTERVAL '1_2' year_month) after_oneyear_twomonth;-- 2021-01-06 11:06:17,2021-02-06 11:06:17,2022-03-06 11:06:17
select now() current,date_add(now(),INTERVAL -31 day) after31days, date_add(now(),INTERVAL '-1_-2' year_month) after_oneyear_twomonth;-- 2021-01-06 11:07:57,2020-12-06 11:07:57,2019-11-06 11:07:57

-- DATEDIFF(date1,date2)函数:用来计算两个日期之间相差的天数。
select DATEDIFF('2021-01-10',now());-- 4

 

select concat(YEAR (20190101),'-W',LPAD(WEEK(20190101), 2, '0'))
,concat(YEAR (20190101),'-W',LPAD(weekofyear(20190101), 2, '0')) -- 2019-W00 2019-W01

 

流程函数

 

 

-- IF(value,t,f)函数 
select if(salary>2000, 'high', 'low') from salary;

-- IFNULL(value1,value2)函数:这个函数一般用来替换 NULL 值,我们知道 NULL 值是不能参与数值运算的,下面这个语句就是把NULL值用0来替换。
select ifnull(salary,0) from salary;

-- CASE WHEN [value1] THEN[result1]…ELSE[default]END函数
select case when salary<=2000 then 'low' else 'high' end from salary;

 

其他常用函数

 

 

-- DATABASE()函数:返回当前数据库名。
select DATABASE();-- demo

-- VERSION()函数:返回当前数据库版本。
select VERSION();-- 5.7.24-log


-- USER()函数:返回当前登录用户名。
select USER();-- root@localhost

-- INET_ATON(IP)函数:返回IP地址的网络字节序表示。
select INET_ATON('192.168.1.1');-- 3232235777

-- INET_NTOA(num)函数:返回网络字节序代表的IP地址。
select INET_NTOA(3232235777); -- 192.168.1.1
-- select * from t where inet_aton(ip)>=inet_aton('192.168.1.3') and inet_aton(ip)<=inet_aton('192.168.1.20');

-- PASSWORD(str)函数:返回字符串str的加密版本,一个41位长的字符串。
select PASSWORD('123456');-- *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9

-- MD5(str)函数:返回字符串str的MD5值,常用来对应用中的数据进行加密。
select MD5('123456');-- e10adc3949ba59abbe56e057f20f883e

 

更多参考:MySQL8 从入门到精通 -第6章 mysql函数

posted @ 2021-01-05 17:52  草木物语  阅读(182)  评论(0编辑  收藏  举报