[!quote] 大多数 SQL 支持以下函数:
- 算术操作的数值函数
- 生成美观的输出内容的格式化函数
- 返回 DBMS 特殊信息的系统函数
- 聚合函数
日期函数
now()获取当前的系统时间YEAR(date)在 date 数据类型中提取出 year
sql
insert into customer(update_time) values (now()); //插入当前时间
SELECT order_num FROM Orders WHERE YEAR(order_date) = 2020;文本函数
CONCAT(S1,S2,..Sn)将 S1,S2,….Sn 拼接成一个字符串LOWER(str)将字符串 str 全部转为小写UPPER(str)将字符串 str 全部转为大写LPAD(str,n,pad)左填充,用字符串 pad 对 str 的左边进行填充,达到 n 个长度RPAD(str,n,pad)右填充,用字符串 pad 对 str 的右边进行填充,达到 n 个长度TRIM(str)去掉字符串头部和尾部的空格SUBSTRING(str,start,len)返回从字符串 str 从 start 位置起的 len 个长度的字符串LEFT(str,len)返回 str 左边开始数 len 长度个字符RIGHT(str,len)返回 str 右边开始数 len 长度个字符LENGTH(str)返回 str 字符串的长度
sql
select concat ('hello', 'MySQL'); hello MySQL
select Lower('Hello'); hello
select upper('Hello'); HELLO
select lpad('01', 5, '-'); ---01
select rpad('01', 5, '-'); 01---
select trim(' Hello MySQL ') Hello MySQL
// RTRIM():去掉字符串右边的空格
// LTRIM():去掉字符串左边的空格
select substring('Hello MySQL',1, 5); Hello
// 注意索引是从1开始的
SELECT LEFT('HELLO',3); HEL
SELECT LENGTH('HELLO'); 5聚合函数
AVG()返回某列的平均值COUNT()返回某列的行数
sql
SELECT COUNT(cust_email) AS num_cust FROM Customers;[!hint] 对于
NULL的计数
- 使用
COUNT(*)对表中行进行计数时,对于NULL值也会记录sqlSELECT COUNT(*) FROM Customers;
- 如果只是
COUNT(某个字段),则不会计数NULL值sqlSELECT COUNT(numbers) FROM Customers;
MAX()返回某列的最大值MIN()返回某列的最小值SUM()返回某列值之和
数值函数
[!hint] 数值函数是各种 DBMS 最一致的函数
- 数学运算函数
CEIL(x)向上取整FLOOR(x)向下取整MOD(x, y)返回 x/y 的余数RAND()返回 0 到 1 之间的随机数ROUND(x, y)对参数 x 进行四舍五入,保留 y 位小数
- 数学函数与常量
ABS()返回一个数的绝对值COS()返回一个角度的余弦EXP()返回一个数的指数值PI()返回圆周率π的值SIN()返回一个角度的正弦SQRT()返回一个数的平方根TAN()返回一个角度的正切
流程控制函数
IF(表达式, tvalue, fvalue)当表达式为 true 时,取值 tvalue,否则 fvalueIFNULL(value1, value2)当 value1 为 NULL 时,返回 value2,否则返回 value1CASE
sql
// 从上到下地评估 `WHEN` 后面的条件。当满足条件时,就会返回对应的结果,并跳过所有的剩余条件
// 如果没有任何条件被满足,它就会返回 `ELSE` 后面的结果
// 如果没有 `ELSE`,且没有任何条件被满足,就返回 NULL
CASE
WHEN 表达式 THEN value1
WHEN 表达式 THEN value2
...
ELSE value3
END;