MySQL数据库的函数
MySQL函数共有5种,分别为:
- 控制流程函数
- 字符串函数
- 数值函数
- 日期和时间函数
- 聚合函数
1. 控制流程函数
1. CASE / WHEN
CASE value WHEN [compare-value] THEN result [WHEN [compare-value] THEN result ...] [ELSE result] END
例如:
mysql> select case 1 when 1 then 'one' when 2 then 'two' else 'more' end result;
//如果value(1)为1,则显示one,如果为2,则显示two,否则显示more
+--------+
| result |
+--------+
| one |
+--------+
或
CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...] [ELSE result] END
mysql> select case when 1 > 0 then 'true' else 'false' end result;
//如果condition(1 > 0)状态为真则显示true,否则显示false
+--------+
| result |
+--------+
| true |
+--------+
例如: 查询员工工资等级
首先建立一张员工等级表如下:
mysql> select * from SALGRADE;
+-------+-------+-------+
| grade | losal | hisal |
+-------+-------+-------+
| 1 | 700 | 1200 |
| 2 | 1201 | 1400 |
| 3 | 1401 | 2000 |
| 4 | 2001 | 3000 |
| 5 | 3001 | 9999 |
+-------+-------+-------+
mysql> select ename 员工, sal 薪金, case grade when 1 then '一级'
when 2 then '二级'
when 3 then '三级'
when 4 then '四级'
when 5 then '五级'
end 等级
from EMP, SALGRADE
where sal between losal and hisal;
+--------+---------+--------+
| 员工 | 薪金 | 等级 |
+--------+---------+--------+
| xxxx | 1200.00 | 一级 |
| SMITH | 800.00 | 一级 |
| ALLEN | 1600.00 | 三级 |
| WARD | 1250.00 | 二级 |
| JONES | 2975.00 | 四级 |
| MARTIN | 1250.00 | 二级 |
| BLAKE | 2850.00 | 四级 |
| CLARK | 2450.00 | 四级 |
| SCOTT | 3000.00 | 四级 |
| KING | 5000.00 | 五级 |
| TURNER | 1500.00 | 三级 |
| ADAMS | 1100.00 | 一级 |
| JAMES | 950.00 | 一级 |
| FORD | 3000.00 | 四级 |
| MILLER | 1300.00 | 二级 |
+--------+---------+--------+
1.2 IF
IF(expr1, expr2, expr3)
含义:如果expr1是TRUE(不为0且不为NULL)则返回expr2的值否则返回expr3的值。
mysql> select if(1>2, 'yes', 'no') result;
+--------+
| result |
+--------+
| no |
+--------+
1.3 IFNULL
IFNULL(expr1, expr2)
含义:如果expr1不为NULL,则IFNULL的返回值为expr1的值,否则返回expr2的值。
mysql> select ifnull(1, 0) result;
+--------+
| result |
+--------+
| 1 |
+--------+
2. 字符串函数
2.1 ASCII(str)
返回值为字符串str的最左字符的数值,如果str为空字符串,则返回值为0;如果str为NULL,则返回值为NULL。ASCII()用于带有从0到255的数值的字符。
mysql> select ascii('abc');
+--------------+
| ascii('abc') |
+--------------+
| 97 |
+--------------+
2.2 BIN(N)
返回值为N的二进制值的字符串
mysql> select bin(12);
+---------+
| bin(12) |
+---------+
| 1100 |
+---------+
2.3 CHAR(N, …)
CHAR()将每个参数N理解为一个整数,其返回值为一个包含这些整数的代码值所给出的字符的字符串,NULL值被省略。
mysql> SELECT CHAR(77,121,83,81,76);
+-----------------------+
| CHAR(77,121,83,81,76) |
+-----------------------+
| MySQL |
+-----------------------+
3. 数值函数
3.1算术操作符
mysql> select 1+1;
+-----+
| 1+1 |
+-----+
| 2 |
+-----+
mysql> select 3/7;
+--------+
| 3/7 |
+--------+
| 0.4286 |
+--------+
3.2 数学函数
mysql> SELECT ABS(-32);
//返回绝对值
+----------+
| ABS(-32) |
+----------+
| 32 |
+----------+
ASIN(X) 是反正弦函数
ACOS(X)是反余弦函数
.......
4.日期和时间函数
4.1 now
返回当前日期
mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2017-02-24 17:51:01 |
+---------------------+
4.2 date_add/adddate
返回日期加天数后的日期
mysql> select date_add('1998-02-02', INTERVAL 28 DAY) newday;
+------------+
| newday |
+------------+
| 1998-03-02 |
+------------+
//adddate与date_add用法相同,等价于如下:
SELECT adddate('1998-02-02', INTERVAL 28 DAY);
SELECT adddate('1998-02-02', 28); //date_add无此用法
4.3datediff
返回两个日期的时间差
mysql> select DATEDIFF(now(),'2015-07-15') 时间差;
+-----------+
| 时间差 |
+-----------+
| 590 |
+-----------+
mysql> select DATEDIFF('2015-07-15', '2017-07-07') 时间差;
+-----------+
| 时间差 |
+-----------+
| -723 |
+-----------+
4.3 date_format
根据format字符串安排date值的格式
可以有的格式有:
格式 描述
%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 秒(00-59)
%s 秒(00-59)
%T 时间, 24-小时 (hh:mm:ss)
%U 周 (00-53) 星期日是一周的第一天
%u 周 (00-53) 星期一是一周的第一天
%V 周 (01-53) 星期日是一周的第一天,与 %X 使用
%v 周 (01-53) 星期一是一周的第一天,与 %x 使用
%W 星期名
%w 周的天 (0=星期日, 6=星期六)
%X 年,其中的星期日是周的第一天,4 位,与 %V 使用
%x 年,其中的星期一是周的第一天,4 位,与 %v 使用
%Y 年,4 位
%y 年,2 位
例如:取出当前时间的时分秒
mysql> select DATE_FORMAT(now(), '%H:%i:%s');
+--------------------------------+
| DATE_FORMAT(now(), '%H:%i:%s') |
+--------------------------------+
| 18:07:35 |
+--------------------------------+
5. 聚合函数
聚合函数的使用方法点击