Skip to content

SQL 内置函数

数据表

idclassnameagescore
1一班张三860
2二班李四1070
3一班王五1280
4三班赵六990

聚合函数

  • avg
  • count
  • sum
  • min
  • max
sql
select count(*) as '总人数', sum(score) as '总分', max(score) as '最高分',
  avg(score) as '平均分', min(score) as '最低分' from tableName;
查询结果
总人数总分最高分平均分最低分
4300907560

字符串函数

  • concat
  • substr 和编程语言不同下标从 1 开始 [start,length]
  • length 当前字段的字节长度
  • upper 可以无中生有在数据库没有的字段
  • lower 可以无中生有 大小写转换只针对英文
sql
select concat('xx',name,'yy'),substr(name,2,1),length(name),upper('aa'),
lower(name) from tableName where id = 1;
查询结果
concat('xx',name,'yy')substr(name,2,1)length(name)upper('aa')lower(name)
xx 张三 yy6AA张三

数值函数

  • round 四舍五入
  • ceil 向上取整
  • floor 向下取整
  • abs 绝对值
  • mod 取模 mod(5,2) => 1
sql
select round(1.234),ceil(2.4),floor(3.8),abs(-1.2458),mod(6,4);
查询结果
round(1.234)ceil(2.4)floor(3.8)abs(-1.2458)mod(6,4)
1.23331.24582

日期函数

  • year
  • month
  • day
  • date
  • time
sql
-- eg: create_at = 2022-06-15 15:50:18
select year(create_at),month(create_at),day(create_at),date(create_at),time(create_at);
查询结果
yearmonthdaydatetime
2022612022-06-1515:50:18

条件函数

  • if
sql
select name,score, if(score>=60,'及格','不及格') as grade from tableName;

单条件使用

查询结果
namescoregrade
张三60及格
李四70及格
王五80及格
赵六90及格
  • case
sql
select name,score, case when score>=90 then '优秀' when score>60 then '良好' else '差' end as grade from tableName;

多条件使用

查询结果
namegradegrade
张三60
李四70良好
王五80良好
赵六90优秀

系统函数

  • version
  • datebase
  • user
sql
select version(),database(),user();
查询结果
version()database()user()
8.0.33testroot@172.17.0.1

类型转换函数

常用类型
类型名称
signed整型
unsigned无符号整型
decimal浮点型
char字符类型
date日期类型
time时间类型
datetime日期时间类型
binary二进制类型
  • convert(target,type)
sql
select greatest(1,3,convert('123',signed));
-- '123'-> 123 所有最大值是123
  • cast(target as type)
sql
select greatest(1,3,cast('123' as signed));
-- '123'-> 123 所有最大值是123
  • date_format
sql
select date_format('2022-06-15','%Y年%m月%d日');
-- 2022年06月15日
  • str_to_date
sql
select str_to_date('2022-06-15','%Y-%m-%d');
-- 2022-06-15

其他函数

  • nullif
sql
select nullif(1,1),nullif(1,2);

如果两个值相当返回 null,不相等返回第一个值

  • coalesce
sql
select coalesce(null,null),coalesce(11,5,6);

返回第一个不是 null 的值,如果都是 null 返回的还是 null

  • greatest
sql
select greatest(11,2,3,'22');

返回最大值需要同类型对比这里的最大值是 11 而不是 22

  • least
sql
select least(11,2,3,1);

返回最小值