mysql基本函数(五)

目录

    • 一、数字函数
    • 二、字符函数
    • 三、日期时间函数
      • 3.1 获取系统日期时间的函数
      • 3.2 日期格式化函数
      • 3.3 日期偏移计算
      • 3.4 日期之间相隔的天数
    • 四、条件函数
      • 4.1 IF语句
      • 4.2 条件语句

一、数字函数

函数 功能 用例
ABS 绝对值 ABS(-100)
ROUND 四舍五入 ROUND(4.62)
FLOOR 向下取值 FLOOR(9.9)
CELL 向上取整 CELL(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;

你可能感兴趣的:(MySQL,mysql,数据库)