SQL中的常见函数详细汇总


  1. 单行函数:传一个值,得到一个值: length concat
  2. 分组函数:传一组值,得到一个值:sum,max,min

(一)单行函数

单行函数又可以分为:

  1. 字符函数:length,concat,upper,lower,substr,instr,trim,lpad,rpad,replace,
  2. 数学函数:round ,ceil, floor,truncate,mod
  3. 日期函数:now,curdate,curtime,year,month…monthname,str_to_date,date_format
  4. 其他函数:version,database,user
  5. 流程控制函数: if,case

1.字符函数

#   字符函数
#1.LENGTH 判断字符的长度
select 
  first_name,
  length(first_name) as 'first_name\'s length' 
from
  employees ;

#2.concat 连接字符
select 
  concat(first_name, ' ', last_name) as fullname 
from
  employees ;

#3upper 将参数中所有字符大写
select 
  upper(first_name) as upperFirstname ,
  lower(last_name) as lowerLastname
from
  employees ;
  
#4.substr(或者substring)的四种方式,需要注意的是SQL中的索引都是从1开始的
#4.1 从第n个开始到最后
 select substr('123454321',4);
#4.2 从第n个开始的长度为m的字符串
 select substr('123454321',1,2);
 select substr('123454321',-3,2);
 
#5.instr 查找在某个字符串中第一个出现的子串的位置
 select instr('123454','4');
 
#6. trim 从左右两头分别修建字符(默认为空格,也可以指定修剪字符)
select trim('               notSpace    notSpace    ');
select trim( 'aa' from 'aaaaaNNNNNNNNNaaaaaaaNNNNNNa');

#7.lpad,rpad. l和r意味着左和右,pad意为填充,中间的参数是指总长度为多少
select lpad('test',11,'leftPad');
select rpad('test',12,'rightPad');

#8.replace
select replace('111122223333','111','222');

2.数学函数

 数学函数
#1.round四舍五入,第二个参数表明保留到小数点后几位
select round(1.4);
select round(1.56789,3);

#2.ceil向上取整,floor 向下取整
select 
  ceil(1.4443333),
  ceil(- 1.4434),
  floor(1.555557576),
  floor(- 2.45) ;

#3.truncate小数点后截断
select truncate(1.123456789, 4) ;

#4.mod 取余,其实取余的操作就是一个公示例如:MOD(m,n)=m-(m/n)n
select mod(-1,4);

3.日期函数

#日期函数
#1.now 当前时间,包括日期和具体时间
SELECT NOW() ;

#2.curdate 当前日期,curtime 当前具体时间
SELECT 
  CURDATE() ,
  CURTIME() ;

#3.year,month,day,hour,minute,second,获取时间中具体的某个值
SELECT 
  YEAR(NOW()),
  MONTH(NOW()),
  MONTHNAME(NOW()),
  DAY(NOW()),
  HOUR(NOW()),
  MINUTE(NOW()),
  SECOND(NOW());
  
#4.str_to_date 将一个字符串转换成日期
SELECT STR_TO_DATE('2000年1月16日','%Y年%c月%d日');
SELECT STR_TO_DATE('2017/01/02', '%Y/%m/%d');
#5. date_format 将一个日期转换成字符串
SELECT DATE_FORMAT(NOW(),'%Y年%m月%d日');

4. 流程控制函数

流程控制函数
#1.if 通过if可以达到控制的效果
select 
  concat(first_name, '_', last_name) as 'name',
  if(
    salary >= 10000,
    'person top person',
    'person under person'
  ) as 'level' 
from
  employees ;
  
#2.case函数,有两种用法
#2.1 类似于编程语言中的switch on用法
select 
CONCAT(first_name, '_', last_name) AS 'name',
case department_id
when 90 then 'Finance Department'
when 60 then 'Hunman Resource Department'
when 100 then 'Marketing Department'
else 'Son OF A Bitch Department'
end As Department
from employees;
#2.2 类似于编程语言中的多重if else
select 
CONCAT(first_name, '_', last_name) AS 'Name',
case 
when salary>=10000 then 'Person top person'
when salary>=8000  then 'Just a worker'
when salary>=5000 then  'You are a joker'
else 'Trash'
end as 'level'
from employees;

5.其他函数

# 其他函数
#1.version:输出当前mysql的版本
SELECT VERSION();
#2.database,
SELECT DATABASE();
#3.user
SELECT USER();

(二)分组函数

  1. sum:求和
  2. avg:平均值
  3. min:最小值
  4. max:最大值
  5. count:列的个数
#首先要说明的是 所有的分组函数都会忽略 NULL
#1 sum:总和
SELECT 
  SUM(salary) 
FROM
  employees ;

#2.avg:平均值
SELECT AVG(salary)
FROM employees;
#3.min,max:最大值和最小值
SELECT MAX(salary),MIN(salary)
FROM employees;
#4.count:列的个数
SELECT COUNT(`employee_id`)
FROM employees;

猜你喜欢

转载自blog.csdn.net/qq_44823898/article/details/113129296