函数分类:数字函数、字符函数、日期函数、条件函数
一、数字函数
函数 | 功能 | 用例 |
ABS | 绝对值 | ABS(-100) |
ROUND | 四舍五入 | ROUND(4.63) |
FLOOR | 强制舍位到最近的整数 | FLOOR(9.9) |
CEIL | 强制进位到最近的整数 | CEIL |
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) |
二、字符函数
函数 | 功能 | 用例 |
LOWER | 转换小写字符 | LOWER(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(" 你好先生 ") |
- NOW()函数获取系统日期和时间,格式为YYYY-MM-DD HH:MM:SS
- CURDATE()函数获取系统日期,格式为YYYY-MM-DD
- CURTIME()函数获取系统时间,格式为HH:MM:SS
- DATE_FORMAT() 函数用于格式化日期,返回用户需要的日期格式。
DATE_FORMAT(date,format)
示例:
SELECT ename,DATE_FORMAT(hiredate, "%Y")
FROM t_emp;
可以使用的格式如下:
格式 | 描述 |
%a | 缩写星期名 |
%b | 缩写月名 |
%c | 月,数值 |
%D | 带有英文前缀的月中的天 |
%d | 月的天,数值(00-31) |
%e | 月的天,数值(0-31) |
%f | 微秒 |
%H | 小时(00-23) |
%h | 小时(01-12) |
%I | 小时(01-12) |
%i | 分钟,数值(00-59) |
%j | 年的天(001-366) |
%k | 小时(0-23) |
%l | 小时(1-12) |
%M | 月名 |
%m | 月,数值(00-12) |
%p | AM 或 PM |
%r | 时间,12-小时(hh:mm:ss AM 或 PM) |
%S,%s | 秒(00-59) |
%T | 时间, 24-小时(hh:mm:ss) |
%U,%u | 周(00-53)星期日是一周的第一天 |
%V,%v | 周(01-53)星期日是一周的第一天,与 %X 使用 |
%W | 星期名 |
%w | 周的天(0=星期日, 6=星期六) |
%X,%x | 年,其中的星期日是周的第一天,4 位,与 %V 使用 |
%Y | 年,4 位 |
%y | 年,2 位 |
注意:MySQL数据库中,两个日期不能直接加减,日期与数字也不能加减
- DATE_ADD() 函数 可以实现日期的偏移计算,而且时间单位很灵活。
DATE_ADD(date,INTERVAL expr type)
date 参数是合法的日期表达式。expr 参数是您希望添加的时间间隔,即偏移量。
type 参数可以是下列值:
- MICROSECOND
- SECOND
- MINUTE
- HOUR
- DAY
- WEEK
- MONTH
- QUARTER
- YEAR
- SECOND_MICROSECOND
- MINUTE_MICROSECOND
- MINUTE_SECOND
- HOUR_MICROSECOND
- HOUR_SECOND
- HOUR_MINUTE
- DAY_MICROSECOND
- DAY_SECOND
- DAY_MINUTE
- DAY_HOUR
- YEAR_MONTH
示例:
SELECT DATE_ADD(NOW(), INTERVAL 15 DAY);
6.DATEDIFF()函数用来计算两个日期之间相差的天数。
DATEDIFF(日期, 日期)
四、条件函数
SQL语句中可以利用条件函数来实现编程语言中的条件判断。
IFNULL(表达式, 值)
IF(表达式, 值1, 值2)
示例:公司发礼品,SALLS部门发放礼品A,其余部门发放礼品B,打印每名员工获得的礼品。
SELECT e.empno,e.ename,d.dname
IF(d.dname="SALLS","礼品A","礼品B")
SELECT FROM t_emp e JOIN t_dept d ON e.deptno=d.deptno;
复杂的条件判断:
CASE
WHEN 表达式 THEN 值1
WHEN 表达式 THEN 值2
……
ELSE 值N
END
示例:员工集体旅游,每个部门旅游目的地是不同的。SALLS部门去P1地点,ACCOUNTING部门去P2地点,RESEARCH部门去P3地点,查询每名员工的旅行地点。
SELECT e.empno,e.ename,
CASE
WHEN d.dname="SALLS" THEN "p1"
WHEN d.dname="ACCOUNTING" THEN "p2"
WHEN d.dname="RESEARCH" THEN "p3"
END AS place
FROM t_emp e JOIN t_dept d ON e.deptno=d.deptno;