常用函数

学习目标

  • 掌握字符串函数用法
  • 掌握数值函数用法
  • 掌握日期函数用法
  • 掌握其他常用函数

1. 常用字符串函数

CHAR_LENGTH(s)

                    
SELECT CHAR_LENGTH("哈利波特");
                    
                
结果返回:4

CONCAT(s1,s2...sn)

                    
SELECT CONCAT("火影忍者", "海贼王", "哆啦A梦", "名侦探柯南");
                    
                
结果返回:火影忍者海贼王哆啦A梦名侦探柯南

FORMAT(x,n)

                    
SELECT FORMAT('250500.5634', 2);
                    
                
结果返回:250,500.56 (数字上的引号可以省略)

LOWER(s)

                    
SELECT LOWER('ABC');
                    
                
结果返回:abc

UPPER(s)

                    
SELECT UPPER('abc');
                    
                
结果返回:ABC

SUBSTR(s, start, length)

                    
SELECT SUBSTR("麦兜响当当", 2, 3);
                    
                
结果返回:兜响当

TRIM(s)

                    
SELECT TRIM('    张三  丰    ');
                    
                
结果返回:张三 丰 (中间空格不会去除)

2. 常用数值函数

AVG(列)

                    
SELECT AVG(列名);
                    
                
效果:计算该列的平均值

COUNT(列/*)

                    
SELECT COUNT(列名/*);
                    
                
效果:统计结果的行数

MAX(列)

                    
SELECT MAX(列名);
                    
                
效果:返回该列最大的一个值

MIN(列)

                    
SELECT MIN(列名);
                    
                
效果:返回该列最小的一个值

SUM(列)

                    
SELECT SUM(列名);
                    
                
效果:统计该列的值总和

RAND()

                    
SELECT RAND();
                    
                
效果:返回0~1之间的一个随机数字,如:0.5332661974553635

3. 常用日期函数

ADDDATE(日期,加的天数)

                    
SELECT ADDDATE("2023-01-20",INTERVAL 10 DAY);
                    
                
效果:2023-01-20加10天,返回2023-01-30

ADDTIME(日期时间,加的时间)

                    
SELECT ADDTIME("2023-01-20 1:21:09","2:33:19");
                    
                
效果:2023-01-20 1:21:09上加2小时33分19秒,返回2023-01-20 03:54:28

DATEDIFF(开始日期,结束日期)

                    
SELECT DATEDIFF("2022-02-20","2023-02-20");
                    
                
效果:-365

DATE_ADD(日期,加的天数)

                    
SELECT DATE_ADD("2023-02-20",INTERVAL 10 DAY);
                    
                
效果:2023-02-20加10天,返回2023-03-02

DATE_SUB(日期,减的天数)

                    
SELECT DATE_SUB("2023-02-20",INTERVAL 10 DAY);
                    
                
效果:2023-02-20减10天,返回2023-02-10

DATE_FORMAT(日期表达式,日期格式)

                    
SELECT DATE_FORMAT("20230220","%Y-%m-%d");
                    
                
效果:格式化日期时间,返回2023-02-20

YEAR(日期时间)

                    
SELECT YEAR("2023-02-20 10:28:09");
                    
                
效果:截取年份,返回2023

MONTH(日期时间)

                    
SELECT MONTH("2023-02-20 10:28:09");
                    
                
效果:截取月份,返回2

DAY(日期时间)

                    
SELECT DAY("2023-02-20 10:28:09");
                    
                
效果:截取日,返回20

TIME(日期时间)

                    
SELECT TIME("2023-02-20 10:28:09");
                    
                
效果:截取时间,返回10:28:09

CURDATE()

                    
SELECT CURDATE();
                    
                
效果:返回系统日期

CURTIME()

                    
SELECT CURTIME();
                    
                
效果:返回系统时间

NOW()

                    
SELECT NOW();
                    
                
效果:返回系统当前日期和时间

SYSDATE()

                    
SELECT SYSDATE();
                    
                
效果:返回系统当前日期和时间

4. 常用其他函数

CASE函数

                    
SELECT CASE sex
     WHEN 1 THEN '男'
     WHEN 0 THEN '女'
     ELSE '未知'
END
FROM user_info;
                    
                
效果:在user_info表中,sex性别如果=1,则显示为“男”;sex性别如果=0,则显示为“女”;如果不是0也不是1,则显示“未知”

IF函数

                    
SELECT IF(age >= 18,'已成年','未成年') FROM user_info;
                    
                
效果:在user_info表中,age年龄大于18,则显示“已成年”;否则显示“未成年”

IFNULL函数

                    
SELECT IFNULL(age,'未填写年龄') FROM user_info;
                    
                
效果:在user_info表中,age如果不是null,则返回实际值;如果age是null,则返回“未填写年龄”

ISNULL函数

                    
SELECT ISNULL(age) FROM user_info;
                    
                
效果:在user_info表中,age年龄是null,则显示为1;年龄不是null,则显示为0

NULLIF函数

                    
SELECT NULLIF(create_user,update_user) FROM news;
                    
                
效果:在user_info表中,如果create_user创建人和update_user修改人是一致的,则返回null;否则返回create_user创建人

DATABASE()

                    
SELECT DATABASE();
                    
                
效果:返回当前所在的数据库名