mysql基本函数(五)

一、数字函数

函数功能用例
ABS绝对值ABS(-100)
ROUND四舍五入ROUND(4.62)
FLOOR向下取值FLOOR(9.9)
CEIL向上取整CEIL(3.2)
POWER幂函数POWER(2,3)
LOG对数函数LOG(7, 3)
LN对数函数LN(10)
SQRT开平方SQRT(9)
PI圆周率PI()
SIN三角函数SIN(1)
COS三角函数COS(1)
TAN三角函数TAN(1)
COT三角函数COT(1)
RADIANS角度转弧度RADIANS(30)
DEGREES弧度转角度DEGREES(1)

注意:

  1. 三角函数内的单位是弧度,不是角度

    求sin30° (算出来的结果有误差)

    SELECT SIN(RADIANS(30))
    
  2. 4.6288四舍五入要精确到后两位

    SELECT ROUND(4.6288*100)/100;
    

二、字符函数

函数功能用例
LOWER转小写字符LOWRE(ename)
UPPER转大写字符UPPER(ename)
LENGTH字符数量LENGTH(ename)
CONCAT连接字符串CONCAT(sal, “$”)
INSTR字符出现的位置INSTR(ename, “A”)
INSERT插入/替换字符INSERT(“你好”, 1, 0, “先生”)
REPLACE替换字符REPLACE(“你好先生”, “先生”, “女士”)

注意:

  1. 下标从1开始
  2. INSERT函数,要在你好之前插入先生,1表示位置,0表示偏移量,所以0就是不替换。
函数功能用例
SUBSTR截取字符串SUBSTR(“你好世界”, 3,4)
SUBSTRING截取字符串SUBSTRING(“你好世界”,3, 2)
LPAD左侧填充字符LPAD(“Hello”, 10, “*”)
RPAD右侧填充字符RPAD(“Hello”, 10, “*”)
TRIM去除首位空格TRIM(" 你好先生 ")

注意:

  1. SUBSTR()中的3,4表示截取下标[3,4]的内容,闭区间
  2. SUBSTRING()中的3表示下标从3开始,2表示截取两个字符
  3. LPAD()和RPAD()的10表示原始字符串和填充的字符串加起来不到10个字符

例子: 保留手机后后四位,其余填充*

SELECT LPAD(SUBSTRING("1223456789", 8, 4), 11, "*");

例子: 截取人名的姓氏,其他用*填充

SELECT RPAD(SUBSTRING("李小龙", 1, 1), LENGTH("李小龙")/3, "*");

一个汉字在utf8编码下占3个字节因此/3

三、日期时间函数

3.1 获取系统日期时间的函数

  1. NOW() 获取系统日期和时间,格式yyyy-mm-dd hh:mm:ss
  2. CURDATE() 获取系统日期 ,格式yyyy-mm-dd
  3. CURTIME() 获取系统时间,格式hh:mm:ss

3.2 日期格式化函数

DATE_FORMAT() 用于格式化日期,返回用户想要的日期格式

DATE_FORMAT(日期, 表达式)

例子:提取日期中的年份

SELECT ename, DATE_FORMAT(hiredate, "%Y") FROM t_emp;

占位符作用占位符作用
%Y年份%m月份
%d日期%w星期(数字)
%W星期(名称)%j本年第几天
%U本年第几周%H小时(24)
%h小时(12)%i分钟
%s%r时间(12)
%T时间(24)

注意:

  1. 星期的占位符,小写w周日返回的是0;大写W返回的是英文的星期名称,如周一:Monday
  2. %r返回的是hh:mm:ss

3.3 日期偏移计算

Mysql数据库里面,两个日期不能直接加减,日期也不能与数字加减

DATE_ADD()函数可以实现日期的便宜计算,而且单位很灵活

+-代表时间往后还是往前

DATE_ADD(日期, INTERVAL 偏移量 时间单位)

例子:

# 后15天的时间
SELECT DATE_ADD(NOW(), INTERVAL 15 DAY);
# 当前时间的前300min
SELECT DATE_ADD(NOW(), INTERVAL, -300 MINUTE);
# 6个月3天前的时间
SELECT DATE_ADD(DATE_ADD(NOW(), INTERVAL -6 MONTH), INTERVAL -3 DAY);

3.4 日期之间相隔的天数

DATEDIFF()函数计算两个日期之间相差的天数

DATEDIFF(日期, 日期)

四、条件函数

4.1 IF语句

  1. IFNULL(表达式, 值)

  2. IF(表达式, 值1, 值2) 类似三目运算符, 表达式为真返回值1,否则返回值2

例子: 公司发礼品,SALES部门发礼品A,其他部门发礼品B,打印每名员工获得的礼品

SELECT 
	e.empno, e.ename, d.dname,
	IF(d.dname="SALES","礼品A", "礼品B")
FROM t_emp e JOIN t_dept d ON e.deptno=d.deptno;

4.2 条件语句

复杂的条件判断可以用条件语句来实现,比IF语句功能更强大

CASE
	WHEN 表达式 THEN1
	WHEN 表达式 THEN2
	...
	ELSE 值N
END

例子: 公司组织员工旅游,每个部门去的目的地不同,SALES部门去P1地点,ACCOUNT部门去P2,RESEARCH去P3,查询每名员工的旅游地点

SELECT 
	e.empno, e.ename,
	CASE
		WHEN d.dname="SALES" THEN "P1"
		WHEN d.dname="ACCOUNT" THEN "P2"
		WHEN d.dname="RESEARCH" THEN "P3"
	END AS place
FROM t_emp e JOIN t_dept d ON e.deptno=e.deptno;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值