MySQL常见函数之单行函数

函数的概念

类似于java中的方法,将一组逻辑语句封装在方法体内,对外暴露方法名

函数的优点

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

函数的调用方式

调用:select 函数名(参数列表)【from 表】

函数的分类

1.单行函数
如concat、length、ifnull等
2.分组函数
功能:做统计使用,又称为统计函数、聚合函数、组函数

下面便开始介绍MySQL常见函数中的单行函数

一、字符型函数

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

SELECT LENGTH('john');
SELECT LENGTH('哈哈哈');

2.concat 拼接字符串

SELECT
	CONCAT(last_name,' ',first_name)  姓名
FROM
	employees;

3.upper、lower 大小写变化

SELECT UPPER('john');        #结果为  JOHN
SELECT LOWER('John');       #结果为   john
案例:将姓变大写,然后名变小写然后拼接
SELECT
	CONCAT(UPPER(last_name),LOWER(first_name))  姓名
FROM
	employees;

4.substr、substring 字符串截取

注意:索引从1开始
#截取从指定索引处后面的所有字符
SELECT
	SUBSTR('abcdefgh',7) output;
结果output值为'gh';

#截取从指定索引处指定字符长度的字符
SELECT
	SUBSTR('abcdefgh', 1, 3) output;
结果output值为'abc';

#案例:姓名中的首字符大写,其他字符小写然后用'_'拼接显示出来
SELECT
	CONCAT(UPPER(SUBSTR(name,1,1)),'_',LOWER(SUBSTR(name,2)))
	AS output
FROM
	employees;

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

SELECT
	INSTR('defabc','abc') output;
结果output值为4;

6.trim 去掉字符串前后的某些字符,默认去空格

SELECT
	TRIM('   a   ') AS output;
结果output值为'a'

SELECT
	TRIM('a','aaaaaabaaabaaa') AS output;
结果output值为'baaab'

7.lpad 左补位

SELECT
	LPAD('aaa',5,'*') AS output;
结果output值为'**aaa',如果设置长度小于原字符串长度则从右往截取

8.rpad 右补位

SELECT
	RPAD('aaa',5,'*') AS output;
结果output值为'aaa**'

9.replace 替换

SELECT
	REPLACE('gaoyuke','ke','pink') AS output;
结果output值为'gaoyupink'

二、数学函数

1.round 四舍五入 保留小数

SELECT ROUND(1.4);    #结果为1
SELECT ROUND(1.557,2);   #结果为1.56

2.ceil 向上取整,返回>=该参数的最小整数

SELECT CEIL(1.02);    #结果为2

3.floor 向下取整,返回<=该参数的最大整数

SELECT FLOOR(1.02);    #结果为1

4.truncate 截断

SELECT TRUNCATE(1.6999,1);   #结果为1.6

5.mod 取余

SELECT MOD(10,3);   #结果为1 等同于 %

三、日期函数

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

SELECT NOW();

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

SELECT CURDATE();

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

SELECT CURTIME();

4.可以获取指定部分,年、月、日、时、分、秒

SELECT YEAR(NOW()) 年;  #获取年
SELECT MONTH(NOW()) 月;  #获取月

5.str_to_date 将字符通过指定格式转换为日期

SELECT
	STR_TO_DATE('1998-3-2','%Y-%c-%d') AS output;
结果output值为'1998-03-02';

案例:查询入职日期为1992-4-3的员工信息(表中入职日期的字段为come_date)
SELECT
	*
FROM
	employees
WHERE
	come_date = STR_TO_DATE('4-3 1992','%c-%d %Y');

6.date_format 将日期转化为字符

SELECT DATE_FORMAT(come_date,'%y年%m月%d日');

案例:查询有奖金的员工名和入职日期(**月/**日  **年)
SELECT
	name,
	DATE_FORMAT(come_date,'%m月/%d日 %y年')  入职日期
FROM
	employees
WHERE
	msg IS NOT NULL;         #msg为奖金字段

四、其他函数

SELECT VERSION(); #版本号
SELECT DATABASE(); #当前库
SELECT USER(); #当前用户

五、流程控制函数

1.if函数:if else的效果

SELECT IF(10<5,'错','对');  #结果为错

案例:输出员工的名字,有奖金备注哈哈,没奖金备注呵呵
SELECT
	last_name,
	msg,
	IF(msg IS NULL,'呵呵','哈哈')  备注
FROM
	employees;

2.case函数
第一种语法:

case:要判断的字段或表达式
when 常量1 then 要显示的值1或语句1
when 常量2 then 要显示的值2或语句2
...
else  要显示的值n或语句n
end

案例:查询员工的工资,要求编号为30显示工资为1.1倍,编号为40显示工资1.2倍,
编号为50显示工资1.3倍,其他编号显示工资为原工资
SELECT
	salary 原始工资,
	num
CASE num
WHEN 30 THEN salary*1.1
WHEN 40 THEN salary*1.2
WHEN 50 THEN salary*1.3
ELSE salary
END AS 新工资
FROM
	employees;

第二种语法:类似于多重if

case
when 常量1 then 要显示的值1或语句1
when 常量2 then 要显示的值2或语句2
...
else  要显示的值n或语句n
end

案例:查询员工的工资情况,大于20000为A,大于15000为B
大于10000为C,否则为D
SELECT
	salary,
CASE
WHEN salary>20000 THEN 'A'
WHEN salary>15000 THEN 'B'
WHEN salary>10000 THEN 'C'
ELSE 'D'
END AS 工资级别
FROM
	employees;

单行函数的介绍就到这里,如果发现错误或对文章有疑问请及时提出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

囿于之间

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值