函数 | 功能 | 用例 |
---|---|---|
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) |
注意:
三角函数内的单位是弧度,不是角度
求sin30° (算出来的结果有误差)
SELECT SIN(RADIANS(30))
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(“你好先生”, “先生”, “女士”) |
注意:
函数 | 功能 | 用例 |
---|---|---|
SUBSTR | 截取字符串 | SUBSTR(“你好世界”, 3,4) |
SUBSTRING | 截取字符串 | SUBSTRING(“你好世界”,3, 2) |
LPAD | 左侧填充字符 | LPAD(“Hello”, 10, “*”) |
RPAD | 右侧填充字符 | RPAD(“Hello”, 10, “*”) |
TRIM | 去除首位空格 | TRIM(" 你好先生 ") |
注意:
例子: 保留手机后后四位,其余填充*
SELECT LPAD(SUBSTRING("1223456789", 8, 4), 11, "*");
例子: 截取人名的姓氏,其他用*填充
SELECT RPAD(SUBSTRING("李小龙", 1, 1), LENGTH("李小龙")/3, "*");
一个汉字在utf8编码下占3个字节因此/3
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) |
注意:
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);
DATEDIFF()函数计算两个日期之间相差的天数
DATEDIFF(日期, 日期)
IFNULL(表达式, 值)
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;
复杂的条件判断可以用条件语句来实现,比IF语句功能更强大
CASE
WHEN 表达式 THEN 值1
WHEN 表达式 THEN 值2
...
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;