mysql中常见函数 使用率特别高

4. 常见函数

概念: 类似于Java中的方法,将一组逻辑语句封装在方法体中,对外暴露方法名。

好处: 1. 隐藏了实现细节 2. 提高代码的重用性

调用: select 函数名() [from 表名]; 函数括号中是实参列表

特点: 1. 干什么(函数功能) 2. 叫什么(函数名)

分类: 1. 单行函数 传入一个参数,返回一个值 如:concat length ifNull isNull

​ 2.分组函数 传入一组参数,返回一个值 功能: 做统计使用,又称统计函数,聚合,组函数

1. 单行函数
1.字符函数

字符函数分为:大小写控制函数(lower,upper),字符控制函数(concat,substr,length,instr等)

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

select length(‘str’) 返回3个字节

重点: 一个汉字三个字节 一个字符一个字节

show varibles like ‘%char%’ 查看字符集

2.concat() 拼接字符串

select concat(str1, str2) from employees;

3.upper lower 大写 小写

select upper(‘join’); 返回JOIN

函数可以嵌套使用,也可将函数的返回值作为另一个函数的参数

4.substr substring 作用相同,截取

select substr(‘123456’, 3) 返回3456

注意: 索引从1开始 substr有三个参数 字符串,开始索引位置,长度

5.instr 返回子串第一次出现的索引,如果找不到返回0

select instr(‘123456’, ‘234’); 返回2

6.trim 去前后空格

select trim(’ zhang '); # zhang

特殊用法: 指定去掉前后的数

select trim(‘a’ from(‘aaa12a3aaa’)); 返回12a3

7.lpad rpad 左填充 右填充

用指定的字符等,指定的长度(长度是字符)

select lpad(‘lyt’, 4, ‘*’); 返回 *lyt

8.replace 替换

select replace(‘123456’, ‘123’, ‘++’); 返回 ++456

第一个参数是 原字符串 第二个参数是 要替换的值 第三个参数是 要替换为什么

2.数学函数

1.round 四舍五入

select round(2.5) 返回3

select round(-2.5) 返回-3

select round(2.5, 1); 返回2.5 第二个参数为要保留几位小数

2.ceil 向上取整

select ceil(1.001); 返回2

select ceil(-1.001); 返回-1

3.floor 向下取整

select ceil(1.001); 返回0

select ceil(-1.001); 返回-2

4.truncate 截断 就是保留小数点后几位 但是不会进行四舍五入

select truncate(1.6999, 2); 返回1.69

5.mod 取模,取余

mod(a,b) a-a/b*b 取整

select mod(10, 3); 返回1

select mod(-10, -3); 返回-1

6.rand() 获取随机数

返回0-1之间的小数 如果给一个参数种子 每次就会得到一样的随机数

3.日期函数

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

select now(); 2022-01-06 00:14:06

2.curdate 获取当前日期没有时间

3.curtime 获取当前时间没有日期

4.获取指定部分的年月日时分秒

select year(now()); 获取当前时间的年份

select year(“2022-1-6”); 获取给定时间的年份

month day hour minute second

也可以获取当前月份的名称 select monthname(now()); January

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

select str_to_date(“1-2020-6”,"%c-%Y-%d"); 2020-01-06

%Y 四位年份 %y 二位年份

%m 两位月份 %c 一位月份

%d 日(两位)

%H 24小时制 %h 12小时制

%i 二位的分钟

%s 二位的秒

5.date_format 将日期转换为字符

select date_format(now(), “%y年%m月%d日”); 22年01月06日

4.其他函数

select version(); 版本号
select database(); 当前在那个数据库中
select user(); 用户名
select md5(“123”); 返回md5加密之后的字符

5.流程控制函数

1.if 函数 if else效果

三元运算符,if(条件, 结果1, 结果2) 条件为真,执行结果1,条件为假,执行结果2

select if(commission_pct is Null,1,88) from employees;

2.case 函数 一种控制结构

使用1:类似于java中的switch case效果

syntax:

case 要判断的变量(字段)或表达式

when 常量1 then 要显示的值1或语句1; 关于最后的分号 是值则不需要带 语句需要带

when 常量2 then 要显示的值2或语句2;

else 要显示的值n或语句n;

end

使用2:类似于java中的多重if

syntax:

case

when 条件1 then 要显示的值1或语句1; 分号和上边一样

when 条件2 then 要显示的值2或语句2;

else 要显示的值n或语句n;

end

select last_name,salary,
case 
when salary > 20000 then 10
when salary < 20000 then 20
else 30
end as xin
from employees; 
2.分组函数

sum 求和

avg 平均值

max 最大值

min 最小值

count 计算个数

syntax:

select sum(字段) from 表名; 返回一个值

特点:

  1. sum和avg仅支持数值类型参数,不支持日期型数据和字符型数据。max,min,count执行任意数据参数

  2. 以上分组函数都忽略null值

  3. 可以和关键字distinct搭配使用实现去重运算。

    select sum(distinct salary) from employees;
    
  4. count函数一般使用count(*)来用作统计函数

  5. 和分组函数一同查询的字段要求为 group by 后的字段

少年易老学难成,一寸光阴不可轻

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值