字符串函数
函数 | 功能 | 示例 | 结果 |
---|
CONCAT(S1、S2、…Sn) | 连接S1、S2、…Sn为一个字符串 | select concat (‘aaa’,‘bbb’,‘ccc’) , concat (‘aaa’,null); | aaabbbccc , null(任何字符串与NULL进行连接的结果都是NULL) |
INSERT(str,x,y,instr) | 将字符串str从第x位置开始,y个字符长的子串替换为字符串instr | select INSERT(‘beijing2020you’,12,3,‘me’) | beijing2020me |
LOWER(str) | 将字符串str中所有字符变为小写 | select LOWER(‘BEIJING’) | beijing |
UPPER(str) | 将字符串str中所有字符变为大写 | select UPPER(‘beijing’) | BEIJING |
LEFT(str,x) | 返回字符串str最左边的x个字符 | select LEFT(‘beijing’,3) | bei |
RIGHT(str,x) | 返回字符串str最右边的x个字符 | select RIGHT(‘beijing’,4) | jing |
LPAD(str,n,pad) | 用字符串pad对str最左边进行填充,直到长度为n个字符长度 | select lpad(‘2020’,20,‘beijing’) | beijingbeijingbe2020 |
RPAD(str,n,pad) | 用字符串pad对str最右边进行填充,直到长度为n个字符长度 | select rpad(‘beijing’,20,‘2020’) | beijing2020202020202 |
LTRIM(str) | 去掉字符串str左侧的空格 | select ltrim(’ *beijing’) | *beijing |
RTRIM(str) | 去掉字符串str右侧的空格 | select rtrim('beijing* ') | beijing* |
REPEAT(str,x) | 返回str重复x次的结果 | select repeat(‘beijing’, 3) | beijing beijing beijing |
REPLACE(str,a,b) | 用字符串b替换字符串str中所有出现的字符串a | select replace(‘beijing’,‘j’,’**’) | bei**ing |
STRCMP(s1,s2) | 比较字符串s1和s2 | select strcmp(‘a’,‘b’) | -1(比较ASCII码) |
TRIM(str) | 去掉字符串行尾和行头的空格 | select trim(’ * beijing * ') | * beijing * |
SUBSTRING(str,x,y) | 返回从字符串str x位置起y个字符长度的字串 | select substring(‘beijing’,1,3) | bei |
数值函数
函数 | 功能 | 示例 | 结果 |
---|
ABS(x) | 返回x的绝对值 | select ABS(-0.8) | 0.8 |
CEIL(x) | 返回大于x的最小整数值 | select CEIL(-0.8) | 0 |
FLOOR(x) | 返回小于x的最大整数值 | select FLOOR(-0.8) | -1 |
MOD(x) | 返回x/y的模 | select MOD(15,10) | 5 |
RAND() | 返回0~1内的随机值 | select RAND() | 0.1203556146 |
ROUND(x,y) | 返回参数x的四舍五入的有y位小数的值 | select ROUND(1.1,2) | 1.10 |
TRUNCATE(x,y) | 返回数字x截断为y位小数的结果 | select TRUNCATE(1.2365,2) | 1.23 |
注:MOD(x,y)函数,模数和被模数任何一个为NULL结果都为NULL
日期和时间函数
函数 | 功能 | 示例 | 结果 |
---|
CURDATE() | 返回当前日期 | select CURDATE() | 2020-01-03 |
CURTIME() | 返回当前时间 | select CURTIME() | 14:13:26 |
NOW() | 返回当前的日期和时间 | select NOW() | 2020-01-03 14:13:26 |
UNIX_TIMESTAMP(date) | 返回日期date的UNIX时间戳 | select UNIX_TIMESTAMP(NOW()) | 1184134516 |
FROM_UNIXTIME | 返回UNIX时间戳的日期值 | select FROM_UNIXTIME(1184134516) | 2007-07-11 14:15:16 |
WEEK(date) | 返回日期date为一年中的第几周 | select WEEK(now()) | 1 |
YEAR(date) | 返回日期date的年份 | select YEAR(now()) | 2020 |
HOUR(time) | 返回time的小时值 | select HOUR(CURTIME()) | 14 |
MINUTE(time) | 返回time的分钟值 | select MINUTE(CURTIME()) | 18 |
MONTHNAME(date) | 返回date的月份名 | select MONTHNAME(now()) | July |
DATE_FORMAT(date,fmt) | 返回按字符串fmt格式化日期date值 | select DATE_FORMAT(now(),’%M,%D,%Y’) | July, 11th, 2007 |
DATE_ADD(date,INTERVAL expr type) | 返回一个日期或时间值加上一个时间间隔的时间值 | select now() ,DATE_ADD(now(), INTERVAL 31 day) | 2007-09-03 11:30:48 2007-10-04 11:30:48 |
DATEDIFF(expr,expr2) | 返回起始时间expr和结束时间expr2之间的天数 | select DATEDIFF(‘2008-08-08’,now()) | 328 |
流程函数
函数 | 功能 |
---|
IF(value,t,f) | 如果value是真,返回t;否则返回f |
IFNULL(value1,value2) | 如果value1不为空,返回value1,否则返回value2 |
CASE WHEN [value1] THEN [result1]…ELSE [default] END | 如果value1是真,返回result1,否则返回default |
CASE [expr] WHEN [value1] THEN [result1]…ELSE [default] END | 如果expr等于value1,返回result1,否则返回default |
流程函数
函数 | 功能 |
---|
DATABASE() | 返回当前数据库名 |
VERSION() | 返回当前数据库版本 |
USER() | 返回当前登录用户名 |
INET_ATON(IP) | 返回IP地址的数字表示(网络字节序) |
INET_NTOA(num) | 返回数字(网络字节序)代表的IP地址 |
PASSWORD(str) | 返回字符串str的加密版本 |
MD5() | 返回字符串str的MD5值 |
注:比较IP地址时,需先将IP地址转换为字节序后,再进行比较