MySQL学习笔记-函数

目录

函数

  1. 字符函数
  2. 数学函数
  3. 日期函数
  4. 流程控制函数

函数

分类:

  • 分组函数:将一组值进行统计,得出一个值。
  • 单行函数:将一个值进行处理,得出一个值。
    调用语句:
select 函数名(实参列表);

分组函数:
分组函数这一块在我的另一篇文章MySQL学习笔记-查询中讲解过,这里不做赘述,有兴趣的同学可以过去看一下。

单行函数:

1. 字符函数

常用字符函数:

  • length:获取字节长度
    SELECT LENGTH('abc张三');
    
  • concat:拼接字符串
  • upper:将小写字符转换成大写
  • lower:将大写字符转换成小写
    SELECT UPPER('ABC'); 
    SELECT LOWER('ABC');
    
    #案例:将姓转大写,名转小写,然后拼接
    SELECT CONCAT(UPPER(last_name),' ',LOWER(first_name)) 姓名
    FROM employees;
    
  • instr:获取字串第一次出现的索引,索引从1开始,若找不到则返回0
    SELECT INSTR('张三丰爱上了三丰的郭襄','杨过');
    
  • substr:截取一段字符串
    SELECT SUBSTR('郭襄爱上了杨过',6);
    SELECT SUBSTR('郭襄爱上了杨过',1,2);
    
  • lpad:左填充
    SELECT LPAD('尹志平爱上了',5,'*');
    
  • rpad:右填充
  • trim:去除前后空格或特殊字符
    SELECT LENGTH(TRIM('         小 龙 女                    ')) 美女;
    SELECT TRIM('a' FROM 'aaaaaaaqqqqqq小qq龙q女qqqqqqqqqqqqqq') 美女;
    

2. 数学函数

常用的数学函数:

  • ceil:
    #向上取整,返回>=该参数的最小整数
    SELECT CEIL(-1.0);
    
  • floor:
    #向下取整,返回<=该参数的最大整数
    SELECT FLOOR(-1.0);
    
  • round:
    #四舍五入,先按绝对值四舍五入,然后加正负号
    SELECT ROUND(-1.56);
    SELECT ROUND(1.537,1);
    
  • rand:
    #随机数,返回0-1之间的小数,不包含1
    SELECT RAND();
    
    #返回50-100  a——b   floor(rand()*(b-a+1)+a)
    SELECT CEIL(RAND()*50+50);
    SELECT FLOOR(RAND()*51+50);
    
  • truncate:
    #截断
    #返回1.9
    SELECT TRUNCATE(1.99,1);
    #返回314
    SELECT TRUNCATE(314.15,0);
    #返回310
    SELECT TRUNCATE(314.15,-1);
    

3. 日期函数

常用的日期函数:

  • now
    #获取当前日期
    SELECT NOW();
    
  • curdate
    #获取时间,没有日期
    SELECT CURTIME();
    
  • year
  • month
  • monthname
  • day
    #获取日期的指定部分
    SELECT YEAR(NOW());
    SELECT MONTH(NOW());
    SELECT MONTHNAME(NOW());
    SELECT DAY(NOW());
    
    SELECT CONCAT(YEAR(NOW()),'年',MONTH(NOW()),'月',DAY(NOW()),'日') 日期;
    
  • datediff
    #判断两个日期的差别天数,前者比后者大,返回正数,小返回负数,相等返回0.
    SELECT DATEDIFF(NOW(),'2022-8-8');
    SELECT DATEDIFF('2017-9-25',NOW());
    

4. 流程控制函数

常用的流程控制函数:

  • if ...
    SELECT IF(100>9,'不错呦','不够大') 备注;
    
  • case when ...
    #语法:
    #CASE 
    #WHEN 条件1 THEN 显示的值1
    #WHEN 条件2 THEN 显示的值2
    #...
    #ELSE 显示的值n
    #END
    
    #类似于:
    #IF(条件1){
    #	语句1;
    #}ELSE IF(条件2){
    #}ELSE{
    #
    #}
    #案例:
    SELECT salary,
    CASE 
    WHEN salary>20000 THEN '购买汽车'
    WHEN salary>10000 THEN '购买手机'
    WHEN salary>5000 THEN '购买pad'
    ELSE '购买棒棒糖'
    END 购买资格
    FROM employees;
    
  • case ... when ...
    #语法: 
    #
    #CASE 字段或表达式
    #WHEN 值1 THEN 显示的值1
    #WHEN 值2 THEN 显示的值2
    #...
    #ELSE 显示的值n
    #END
    #
    #类似于:
    #switch(变量或表达式){
    #
    #	CASE 值1 :语句1;break;
    #	...
    #	DEFAULT:语句n;break;
    #
    #}
    #案例:查询部门和对应的级别
    SELECT department_id,
    CASE department_id
    WHEN 10 THEN 'A'
    WHEN 20 THEN 'B'
    WHEN 30 THEN 'C'
    WHEN 50 THEN 'D'
    END 级别
    FROM employees;
    

猜你喜欢

转载自www.cnblogs.com/alifedream/p/MySQL-method.html
今日推荐