zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

MySQL 函数 && 单行函数

mysqlamp 函数 单行
2023-09-11 14:22:56 时间

MySQL 函数

1.函数

概念 类似于Java中的方法,将一组逻辑语句封装在方法体中,对外暴露方法名。
好处 1、隐藏了实现细节。 2、提高了代码的重用性。
调用 select 函数名(实参列表)【from 表】。from 表 根据需要可加可不加,如果函数的参数列表中用到表中的字段,那么就需要加上。
特点 ①叫什么(函数名)②干什么(函数功能)
分类 ①单行函数 如concat、length、ifnull等等。②分组函数 功能:做统计使用,又称为统计函数、聚合函数、组函数。

2.单行函数

2.1字符函数

2.1.1 LENGTH

length 获取参数值的字节个数。
SELECT LENGTH(“mysql”); 结果为5。
在这里插入图片描述
SELECT LENGTH(“mysql最牛”); 结果为11。
在这里插入图片描述
补充,SHOW VARIABLES LIKE '%char%'查看当前客户端的字符集。
在这里插入图片描述
在UTF8字符集中一个字母占用1个字节空间,一个汉字占用3个字节空间。所以mysql占5个字节空间大小,mysql最牛占用11个字节空间大小。

2.1.2 CONCAT

拼接字符串。
例一,拼接employees表中的姓和名,姓和名之间用_连接;
在这里插入图片描述

2.1.3 UPPER && LOWER

UPPER将小写转大写。
LOWER将大写转小写。
例一:将mysql转大写;
在这里插入图片描述
例二:将MYSQL转小写;
在这里插入图片描述
例三:拼接employees表中的姓和名,姓大写,名小写。
在这里插入图片描述
在例三中我们发现,函数中可以嵌套函数,也就说一个函数的返回值可以作为另一个函数的参数。

2.1.4 SUBSTR / SUBSTRING

注意: 在MySQL字符串中索引是从1开始的。
1)SUBSTR(str,pos); 截取从指定索引处后面的字符,从字符串中第pos个字符开始往后分割作为结果返回。
在这里插入图片描述
2)SUBSTR(str,pos,len); 截取从指定索引处指定字符长度的字符。
在这里插入图片描述
例题:姓名中首字符大写,其他字符小写然后用_拼接,显示出来。
在这里插入图片描述

2.1.5 INSTR

INSTR返回字符串中第一次出现的索引位置的下标,如果没有则返回0;
在这里插入图片描述

2.1.6 TRIM

TRIM(str);去掉str字串左右的空格。
TRIM(str1 FROM str2); 去掉str2字串左右的所有的str1字串,只去左右,如果str中包含str1,str2不做改变。
TRIM(str);
在这里插入图片描述
TRIM(str1 FROM str2);
在这里插入图片描述

2.1.7 LPAD && RPAD

LPAD用指定的字符实现左填充指定长度,如果指定长度比给字符串长度小,那么从左开始截断。
在这里插入图片描述
在这里插入图片描述

RPAD用指定的字符实现右填充指定长度,如果指定长度比给字符串长度小,那么也从左开始截断。
在这里插入图片描述
在这里插入图片描述

2.1.8 REPLACE

REPLACE(str,from_str,to_str)用to_str替换str中的所有from_str;
在这里插入图片描述

2.2 数学函数

2.2.1 ROUND

ROUND 四舍五入
ROUND(X),对X四舍五入(取整)。
ROUND(X,D),X小数点后保留D位,同时四舍五入。
ROUND(X)
在这里插入图片描述
ROUND(X,D)
在这里插入图片描述

2.2.2 CEIL

CEIL(X)返回>=该参数X的最小整数。
在这里插入图片描述

2.2.3 FLOOR

FLOOR(X)返回<=该参数X的最大整数。
在这里插入图片描述

2.2.4 TRUNCATE

TRUNCATE(X,D),对X保留小数点后D位。
在这里插入图片描述

2.2.5 MOD

MOD(n,m),取余操作,相当于 n % m;
在这里插入图片描述

2.3 日期函数

2.3.1 NOW

NOW(),返回当前系统日期 + 时间
在这里插入图片描述

2.3.2 CURDATE

CURDATE,返回当前系统日期,不包含时间。
在这里插入图片描述

2.3.3 CURTIME

CURTIME,返回当前系统时间,不包含日期。
在这里插入图片描述

2.3.4 获取指定的部分,年、月、日、小时、分钟、秒

以获取年为例 YEAR(date);
在这里插入图片描述
获取月:MONTH();MONTHNAME()可使获取的月份用英文显示。
获取日:DAY();
获取小时():HOUR();
获取分钟:MINUTE();
获取秒:SECONDE();

2.3.5 STR_TO_DATE

STR_TO_DATE(str,format),将日期格式的字符转换成指定格式的日期。
格式符如下:
在这里插入图片描述
例一:将’1-1-2022’ 转换为日期。
在这里插入图片描述
例二:查询入职日期为1992-4-3的员工信息。
我们可以用 SELECT * FROM employees WHERE hiredate = ‘1992-4-3’;语句查询,但是在用户使用中往往并不是按正确日期格式输入的,如’4-3 1992’,那么我们查询的时候就要将其转换为标准日期格式了。
在这里插入图片描述

2.3.6 date_format

date_format(date,format) 将日期转换成字符。
格式符如下:
在这里插入图片描述
例一:将当前系统日期转换为 xxxx年x月xx日。
在这里插入图片描述
例二:查询有奖金的员工名和入职日期,入职日期按xx月/xx日/xx年格式输出。
在这里插入图片描述

2.4 流程控制函数

2.4.1 IF

IF(expr1,expr2,expr3),如果expr1为真,则返回expr2,否则返回expr3;
例一:判断2 > 1吗?如果大则返回大,否则返回小。
在这里插入图片描述
例二:查询员工表中的员工姓名和奖金,如果员工有奖金备注恭喜恭喜!!,没有没有奖金备注你好惨!。
在这里插入图片描述

2.4.2 CASE

使用一 (和Java中的switch case 语句很像)
case 要判断的字段或表达式
when 常量1then 要显示的值1或语句1;
when 常量2 then 要显示的值2或语句2;
...
else 要显示的值n或语句n;
end

注意:如果then和else后面跟的是值后面不要加;如果跟的是语句要加;
案例:
查询员工的工资,要求
部门号 = 30,显示的工资为1.1倍
部门号 = 40,显示的工资为1.2倍
部门号 = 50,显示的工资为1.3倍
其他部门,显示的工资为原工资

在这里插入图片描述
使用二 (和Java中的多重if很像)
case
when 条件1 then 要显示的值1或语句1
when 条件2 then 要显示的值2或语句2
when 条件3 then 要显示的值3或语句3
...
else 要显示的值n或语句n
end
注意:同样,如果then和else后面跟的是值后面不要加;如果跟的是语句要加;
案例:
查询员工的工资情的情况
如果工资>20000,显示A级别
如果工资>15000,显示B级别
如果工资>10000,显示C级别
否则,显示D级别

在这里插入图片描述