MySQL学习笔记(4):MySQL中的常见函数

函数的调用:
SELECT 函数名(实参列表) 【FROM 表名】

一、单行函数

1.字符函数

(1)length函数(获取参数值的字节个数)

  • 用法
SELECT LENGTH('张小明hahaha');
  • 运行结果
    在这里插入图片描述
    注: 由于编码表是utf-8,故一个汉字占3个字节。

(2)concat函数(拼接字符)

  • 用法
SELECT CONCAT(last_name,'-',first_name) FROM employees;
  • 运行结果
    在这里插入图片描述

(3)upper、lower(将字符变为大写,变为小写)

  • 用法
SELECT UPPER(last_name),LOWER(first_name) FROM employees;
  • 运行结果
    在这里插入图片描述

(4)substr(用来截取字符的一部分,即获取子串)

  • 用法
    在MySQL中,索引是从1开始的。
用法1:
SELECT SUBSTR('好好学习天天向上',5);    //获取从索引5之后的所有字符(截取指定索引处后面的所有字符)
用法2:
SELECT SUBSTR('好好学习天天向上',7,2) 名字;    //获取从索引7开始的2个字符(截取从指定索引处指定字符长度的字符)
  • 运行结果
    用法1结果:
    在这里插入图片描述

用法2结果:
在这里插入图片描述

(5)instr(返回子串中第一次出现的索引,若找不到则返回0)

  • 用法
SELECT INSTR('好好学习天天向上','好好');
  • 运行结果
    在这里插入图片描述

(6)trim(去除前后指定的空格和字符,默认为空格)

  • 用法
用法1:
SELECT TRIM('       好好学习     天天向上     ');    //去除字符前后的空格,但不能去除字符中间的空格
用法2:
SELECT TRIM('aa' FROM 'aaaaa好好学习aaa天天向上aaaa');    //去除字符前后指定的字符,如果将aa改为数字,则不用加‘’引号。
  • 运行结果
    用法1结果:
    在这里插入图片描述

用法2结果:
在这里插入图片描述

(7)lpad和rpid(用指定的字符实现左/右填充至指定长度)

  • 用法
SELECT LPAD('好好学习',7,'a');     //7为填充后的字符长度,若7小于填充前的字符长度,则将原字符取7位即可
  • 运行结果
    在这里插入图片描述

(8)replace(替换)

  • 用法
SELECT REPLACE('好好学习天天向上','天天','年年');      //字符1是原字符,字符2是需要被替换的字符,字符3是替换成的内容
  • 运行结果
    在这里插入图片描述

2.数学函数

(1)round(四舍五入)

  • 用法
用法1:
SELECT ROUND(-1.55); 
用法2:
SELECT ROUND(-1.556,2);     //小数点后保留2位


  • 运行结果
    用法1结果:
    在这里插入图片描述

用法2结果:
在这里插入图片描述

(2)ceil(向上取整,返回>=该参数的最小整数)和floor(向下取整)

  • 用法
SELECT CEIL(-1.000000000002); 
  • 运行结果
    在这里插入图片描述

(3)truncate(小数点后保留指定位数)

  • 用法
SELECT TRUNCATE(1.000000000002,2);        //小数点后保留2位
  • 运行结果
    在这里插入图片描述

(4)mod(取余)

mod(a,b)相当于a-a/b*b ,其中ab正负均可

  • 用法
SELECT MOD(-10,-3); 
  • 运行结果
    在这里插入图片描述

3.日期函数

(1)now(返回当前系统日期+时间)

  • 用法:SELECT NOW();

(2)curdate(返回当前系统日期,不包含时间)

  • 用法:SELECT CURDATE();

(3)curtime(返回当前时间,不包含日期)

  • 用法:SELECT CURTIME();

(4)str_to_date(将日期格式的字符转换成指定格式的日期)

  • 用法
SELECT STR_TO_DATE('1998-3-2','%Y-%c-%d'); 

在这里插入图片描述

  • 运行结果
    在这里插入图片描述

(5)date_format(将日期转换成字符)

  • 用法
SELECT DATE_FORMAT(NOW(),'%y年%m月%d日'); 
  • 运行结果
    在这里插入图片描述

4.流程控制函数

(1)if(if else的效果)

  • 用法
SELECT IF(10>5,'大','小'); 
  • 运行结果
    在这里插入图片描述

(2)case(处理多分支)

  • 用法
用法1:类似于java中的switch case,处理等值判断
case 要判断的字段或表达式
when 常量1 then 要显示的值1或语句1
when 常量2 then 要显示的值2或语句2
...
else 要显示的值n或语句n;              //对应的java语句为default
end

用法2:类似与java中的多重if,处理条件判断
case
when 条件1 then 要显示的值1或语句1
when 条件2 then 要显示的值2或语句2
...
else 要显示的值n或语句n
end

用法1和用法2的区别在于case后面是否加语句了

  • 举例如下

1.用法1举例
查询员工的工资,要求部门号=30,显示的工资为1.1倍,部门号=40,显示的为1.2倍,其他部门为原工资。

SELECT 
  salary,
  department_id, 
  CASE
    department_id 
    WHEN 30 
    THEN salary * 1.1 
    WHEN 40 
    THEN salary * 1.2 
    ELSE salary 
  END AS 新工资
FROM
  employees;

在这里插入图片描述

2.用法2举例
查询员工的工资,工资>20000,显示级别A,工资>15000,显示级别B,否则显示级别C

SELECT 
  salary,
  CASE
    WHEN salary>20000 
    THEN 'A'
    WHEN salary>15000 
    THEN 'B'
    ELSE 'C'
  END AS 工资等级
FROM
  employees;

在这里插入图片描述

二、分组函数

功能: 用作统计使用,又称为聚合函数/统计函数/组函数

(1)分组函数的分类

1.sum函数(求和)

2.avg函数(平均值)

3.max/min函数(最大/最小值)

4.count函数(计数)

(2)特点

1.sum、avg一般用于处理数值型;max、min、count可以处理任何数据类型。

2.以上五个分组函数都忽略null值。,除了count(*)。

3.都可以搭配distinct使用,用于统计去重后的结果。

SELECT COUNT(DISTINCT salary),COUNT(salary) FROM employees ;    //去重和不去重的用法

4.count的参数可以支持:字段、* 、常量值,一般放1(建议使用 count(*))

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值