SQL函数基本概念
函数通常分为内置函数和自定义函数,函数的作用是将经常使用的代码封装起来,需要的时候直接调用,能提高代码效率和可维护性
SQL中的函数一般是在数据上执行的,可以很方便的转换和处理数据
SQL的内置函数分为四类:算数函数,字符串函数,日期函数,转换函数
目录
- SQL函数基本概念
- 算术函数
- 聚焦函数
- 字符串函数
- 日期函数
- CURRENT_DATE():系统当前日期
- CURRENT_TIME():系统当前时间(无日期)
- SYSDATE():系统当前时间(函数执行时的时间)
- CURRENT_TIMESTAMP():系统当前时间(日期+时间),同NOW()
- NOW():系统当前日期(语句开始执行时的时间,上同)
- DO_DAYS():返回一个从0年开始到指定日期的天数
- EXTRACT():抽取具体的年、月、日
- DATE():返回时间的日期部分
- YEAR():返回时间的年份部分
- MONTH():返回时间的月份部分,后面的都差不多,不一一展示
- DAY():返回时间的天数部分
- HOUR():返回时间的小时部分
- MINUTE():返回时间的分钟部分
- SECOND():返回时间的秒部分
- 转换函数
算术函数
ABS():取绝对值
select abs(-2); 结果为2
MOD():取余
select mod(101,3); 结果为2
ROUND():四舍五入为指定的小数位数,两个参数分别为字段数值,小数位数
select round(36.45,1); 结果为36.5
聚焦函数
SUM():返回数值列的和
MAX():返回一列中的最大值
MIN():返回一列中的最小值
AVG():返回数值列的平均值
COUNT():返回匹配指定条件的行数
字符串函数
CONCAT():字符串拼接
select concat('abc',123); 结果为abc123
LENGTH():计算字段的长度,汉字算三个字符,数字或字母为一个字符
select length('您好12ab'); 结果为10
CHAR_LENGTH():计算字段的长度,汉字、数字、字母都算一个字符
select char_length('您好12ab'); 结果为6
LOWER():将字符串中的字符转化为小写
select lower('ABCd'); 结果为abcd
UPPER():将字符串中的字符转化为大写
select upper('abCD'); 结果为ABCD
REPLACE():替换函数,三个参数分别为表达式或字段名、想要查找的被替换字符串、替换的目标字符串
select replace('fabcde','abc','12'); 结果为f12de
SUBSTRING():截取字符串,三个参数分别为表达式或字段名、开始截取的位置(从1开始),想要截取的字符串长度
select substring('fabcde',1,3); 结果为fab
日期函数
CURRENT_DATE():系统当前日期
select current_date(); 结果为2021-08-02
CURRENT_TIME():系统当前时间(无日期)
select current_time(); 结果为17:35:47
SYSDATE():系统当前时间(函数执行时的时间)
CURRENT_TIMESTAMP():系统当前时间(日期+时间),同NOW()
NOW():系统当前日期(语句开始执行时的时间,上同)
select sysdate(); 结果是2021-08-02 17:36:50
select current_timestamp(); 结果是2021-08-02 17:37:00
select now(); 结果是2021-08-02 17:37:10
DO_DAYS():返回一个从0年开始到指定日期的天数
select to_days(date(now())); 从0年到2021-08-02的天数,结果为738369
select * from user where to_days(now())-to_days(created_at)<=1; 查询user表中昨天新添加的数据
EXTRACT():抽取具体的年、月、日
select extract(year from now()); 结果是2021
select extract(day from now()); 结果是2
select extract(hour from now()); 结果是17
DATE():返回时间的日期部分
select date(now()); 结果是2021-08-02
YEAR():返回时间的年份部分
select year('1999-11-02'); 结果是1999
MONTH():返回时间的月份部分,后面的都差不多,不一一展示
select month('2020-12-02'); 结果是12
DAY():返回时间的天数部分
HOUR():返回时间的小时部分
MINUTE():返回时间的分钟部分
SECOND():返回时间的秒部分
转换函数
CAST():数据类型转换,参数是一个表达式,表达式通过AS关键词分割了两个参数,分别是原始数据和目标数据类型
select cast(123.1234 as int); 报错,ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'int)' at line 1
select cast(123.1234 as decimal(8,1)); 结果为123.1
COALESCE():返回第一个非空数值,空字符串也会被返回
select coalesce(null,' ',1,2); 结果为
select coalesce(null,1,2); 结果为1