MySQL常见的函数分为单行函数和分组函数,分组函数又称为统计函数。单行函数包含字符函数、数学函数、日期函数、流程控制函数等。下面根据一些例子介绍这些单行函数。
字符函数LENGTH(),获取参数值得字节的个数:
SELECT LENGTH('Tom'); SELECT LENGTH('李四');
字符函数CONCAT(),字符拼接:
SELECT CONCAT(last_name,'_',first_name) AS 姓名 FROM employees;
字符函数UPPER()小写转大写,LOWER()大写转小写:
SELECT CONCAT(UPPER(last_name),LOWER(first_name)) 姓名 FROM employees;
字符函数SUBSTR()字符截取,索引从1开始:
SELECT SUBSTR('TimiandTom',8) out_put;SELECT SUBSTR('TimiandTom',1,4) out_put;SELECT CONCAT(UPPER(SUBSTR(last_name,1,1)),'#',LOWER(SUBSTR(last_name,2))) res FROM employees;
字符函数INSTR()返回子串第一次出现的索引,如果找不到,返回0:
SELECT INSTR('JerryVSTom','Tom') AS res;
字符函数TRIM()去除前后空格或前后指定字符:
SELECT LENGTH(TRIM(' Tom ')) AS res;SELECT TRIM('w' FROM 'wwwwwwwwTomwwwwwww') AS put;
字符函数LPAD()用指定字符实现左填充指定长度,RPAD()同理:
SELECT LPAD('Jerry',10,'$') AS put;SELECT LPAD('Jerry',3,'$') AS put;SELECT RPAD('Jerry',3,'$') AS put;SELECT RPAD('Jerry',8,'$') AS put;
字符函数REPLACE(),字符替换:
SELECT REPLACE('JackandJohnandJackandTom','Jack','Jerry') AS res;
数学函数ROUND(),四舍五入:
SELECT ROUND(1.4); SELECT ROUND(-1.6);SELECT ROUND(1.345,2);
数学函数CEIL(),向上取整,返回大于等于该参数的最小整数:
SELECT CEIL(1.09); SELECT CEIL(-1.08);
数学函数floor(),向下取整,返回小于等于该参数的最大整数:
SELECT FLOOR(6.78); SELECT FLOOR(-6.98);
数学函数TRUNCATE(),根据位数截断:
SELECT TRUNCATE(1.56,1);
数学函数MOD(),取余数:
SELECT MOD(13,3); SELECT MOD(-13,3);
日期函数NOW(),返回当前日期与时间:
SELECT NOW();
日期函数CURDATE(),只返回当前日期:
SELECT CURDATE();
日期函数CURTIME(),只返回当前时间:
SELECT CURTIME();
日期函数YEAR()、MONTH()等返回年、月等,以此类推,其中MONTHNAME()函数返回的是月份对应的英文单词:
SELECT YEAR(hiredate) FROM employees;SELECT MONTH(hiredate) FROM employees;SELECT MONTHNAME(hiredate) FROM employees;
日期函数STR_TO_DATE(),将日期格式的字符串转换成指定格式的日期;DATE_FORMAT(),将日期转换为字符串:
SELECT STR_TO_DATE('12-5-2020','%m-%d-%Y') AS 日期;SELECT DATE_FORMAT('2020/5/20','%Y年%m月%d日') AS 日期;

流程控制函数IF()类似于Java的三元运算、CASE 函数类似于Java的switch case结构:
SELECT last_name,commission_pct,IF(commission_pct IS NOT NULL,' good','bad') AS KPI FROM employees;SELECT last_name,department_id,salary,CASE department_id WHEN 50 THEN salary * 1.2 WHEN 60 THEN salary * 1.5 WHEN 100 THEN salary * 2 ELSE salary END AS KPI_Salary FROM employees;SELECT last_name,salary,CASE WHEN salary > 20000 THEN 'A' WHEN salary >15000 THEN 'B' WHEN salary >10000 THEN 'C' ELSE 'Other' END AS salary_Level FROM employees;
文章转载自brevity分享,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




