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级别
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/95541.html