- 多行函数(也称 聚集函数、分组函数)
- 单行函数
- 可多个参数,但只返回一个值;
- 参数可以是变量、常量、数据列;
- 对每行单独起作用,每行返回一个结果;
- 使用单行函数可改变参数的数据类型;
- 支持嵌套使用(内层函数返回值是外层函数的参数)。
# 表中name字段的字符长度(输出行数与表的行数相同)
SELECT
CHAR_LENGTH(NAME)
FROM student;
# 嵌套使用
SELECT SIN(CHAR_LENGTH(NAME))
FROM student;
# 为指定日期添加一定的时间
SELECT
DATE_ADD(
'2016-02-28',
# INTERVAL是关键字,后跟一个值和单位
INTERVAL 2 DAY #输出2016-03-01
);
# 更简便的增加指定时间
SELECT
ADDDATE('2015-01-18',3);
SELECT
# CURTIME(); # 获取当前时间,如17:52:55
# 获取当前日期,如2016-01-19
CURDATE();
# MD5加密
SELECT MD5('hello');
#
#处理NULL的函数
#
SELECT
# IFNULL(id,'expr') # id为null,则返回expr
# NULLIF(grade, math) # grade和math相等则返回null,否则返回grade
ISNULL(id) # 为null则返回0(true),否则返回1(false)
FROM student;
SELECT
# 若expr1(id)为true、不等于0且不等于null,则返回expr2,否则返回expr3
#此处id不是布尔值,只要非空即为true
IF(id,'expr2','expr3')
FROM student;
#
# case流程控制函数
# 两种用法
#
SELECT
NAME,
CASE id
WHEN 1 THEN
'is 1'
WHEN 2 THEN
'is 2'
ELSE
'>2'
END AS `level`
FROM
student;
# case语法2更灵活
# when condition(返回boolean值的表达式)
SELECT
NAME,
CASE # id
WHEN id <=5 THEN
'small'
WHEN id <10 THEN
'big'
ELSE
'null'
END AS `level`
FROM
student;