MySQL:函数

1.字符函数
2.数学函数
3.日期函数
4.流程控制函数
5.分组函数



字符函数

1.一个汉字占三个字节,占一个字符

SELECT LENGTH('hellow,河南');
输出结果为:13
SELECT CHAR_LENGTH('hellow,河南');
输出结果为:9

2.字符截取函数

SELECT SUBSTRING('中华人民共和国',2,2);
这里的字符串定位是从1开始的,不是从0开始的。
第一个2表示从"华"字开始截,第二个2表示截取两个字符。如果不写第二个数字2,那么就截取到字符串末尾
代码运行结果为:华人

3.获取字符串第一次出现的位置

SELECT INSTR("校服上除了校徽别别别的",'别');
返回值为8

4.去除文字前后(不是字符串中间)指定字符,默认是空格

SELECT TRIM("  中  过  啊  ");
去除首尾空格
SELECT TRIM("x" FROM "xxxxxxxxxx中 国 梦 xxxx");
去除首尾“x”

5.左填充,右填充

SELECT LPAD('木婉清',10,'a');
设置位置总长度为10,木婉清占三个,然后在左侧填充7个a
SELECT RPAD('木婉清',10,'a');
设置位置总长度为10,木婉清占三个,然后在右侧填充7个a

6.比较两个字符大小

SELECT STRCMP('abc','abc');
比较的是ascII表
前面大返回1,后面大返回-1,一样大返回0

7.左截取,右截取

SELECT LEFT('鸠摩智',2);
截取的是鸠摩
SELECT RIGHT('鸠摩智',2);
截取的是摩智

8.变大小写

select UPPER("sdf")
select lower("asd");


数学函数

1.求绝对值

SELECT ABS(-100);
输出100

2.向上取整,向下取整

SELECT CEIL(1.09);
返回值为2
SELECT FLOOR(1.23);
返回值为1

3.四舍五入,截断

SELECT ROUND(1.51);
返回值为2
SELECT ROUND(1.50345,4)
4表示的是保留四位小数,返回值是1.5035

截断的意思是直接截取不四舍五入
SELECT TRUNCATE(1.50345,4);
返回值为1.5034

4.取余

SELECT MOD(10,3);
返回值为1


日期函数

1.获取日期加时间

SELECT NOW();

2.获取日期

SELECT CURDATE();

3.获取时间

SELECT CURTIME();

4.获取两个日期之差

SELECT DATEDIFF("2000-4-17","2020-3-30")
获取活了多少天,前面的减后面的,所以返回值为负数

5.日期转化函数

SELECT DATE_FORMAT('2000-4-17 4:23:59','%Y年%m月%d日 %h小时%i分%s秒');
输出结果为:2000041704小时2359SELECT STR_TO_DATE("2000年04月17日  04小时23分59秒",'%Y年%m月%i日  %h小时%i分%s秒');
输出结果为:2000-4-17 4:23:59

这两个函数是互逆的。

在这里插入图片描述

流程控制函数

1.if函数

SELECT IF(100>99,"对","错");
类似于三目运算符,输出:对

2.case函数

用法一
SELECT CASE 100%3
WHEN 1 THEN 'np'
WHEN 2 THEN 'bp'
WHEN 3 THEN 'qp'
else 'qp'
END;
输出结果为np
类似于swich函数。可以无限延长

SELECT `department_id` AS 部门, salary AS 旧工资,
CASE `department_id`
WHEN 30 THEN `salary`*2
WHEN 50 THEN salary*3
WHEN 60 THEN salary*4
ELSE `salary`
END AS 新工资
FROM employees
ORDER BY 新工资;
------------------------------------------------------------------------------
用法二
SELECT CASE
WHEN 条件一 THEN 结果一
WHEN 条件二 THEN 结果二
WHEN 条件三 THEN 结果三
ELSE 结果四
END
类似于多重if语句

SELECT salary,
CASE
WHEN `salary` > 20000 THEN "a"
WHEN `salary` > 15000 THEN "b"
WHEN `salary` > 10000 THEN "c"
ELSE "d"
END AS 等级
FROM employees;


分组函数

用于统计计算
这个比较简单,没什么特殊语法。
分组函数的作用就是:将一组(列)数据进行统计计算,最终得到一个值。

SUM() 求和
AVG() 平均数
MAX() 最大值
MIN() 最小值
COUNT() 计算非空字段的个数

select sum(salary) as 薪水合
from employees;

COUNT()介绍:
	COUNT(*)	统计这个表内有几行数据
	count(1)	功能与上面的那个一样,不建议使用,理解一下就好
	搭配DISTINCT实现去重
		count(DISTINCT department_id)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值