时间:2021-07-01 10:21:17 帮助过:30人阅读
再来看一下DATE_ADD(date,INTERVAL expr unit):其中INTERVAL是关键字,expr是一个表达式,unit为间隔类型,MySQL提供如下的间隔类型:
mysql> SELECT DATE_ADD(‘2000-12-31 23:59:59‘,INTERVAL 1 SECOND); +---------------------------------------------------+ | DATE_ADD(‘2000-12-31 23:59:59‘,INTERVAL 1 SECOND) | +---------------------------------------------------+ | 2001-01-01 00:00:00 | +---------------------------------------------------+ row in set (0.00 sec) mysql> SELECT DATE_ADD(‘2100-12-31 23:59:59‘,INTERVAL ‘1:1‘ MINUTE_SECOND); +--------------------------------------------------------------+ | DATE_ADD(‘2100-12-31 23:59:59‘,INTERVAL ‘1:1‘ MINUTE_SECOND) | +--------------------------------------------------------------+ | 2101-01-01 00:01:00 | +--------------------------------------------------------------+ row in set (0.00 sec)
流程函数也是很常用的一类函数,用户可以使用这类函数在一个SQL语句中实现条件选择,这样做能够提高语句的效率。
举例:
现在有员工工资表如下:
mysql> select * from salary; +----+---------+ | id | salary | +----+---------+ | 1 | 1000.00 | | 2 | 2000.00 | | 3 | 3000.00 | | 4 | 4000.00 | | 5 | 5000.00 | | 6 | 6000.00 | | 7 | 7000.00 | | 8 | NULL | +----+---------+ rows in set (0.00 sec)
(1)当工资高于5000就显示高工资,低于5000的就显示低工资:
mysql> select id,if(salary>5000,‘高工资‘,‘低工资‘) as level from salary; +----+-----------+ | id | level | +----+-----------+ | 1 | 低工资 | | 2 | 低工资 | | 3 | 低工资 | | 4 | 低工资 | | 5 | 低工资 | | 6 | 高工资 | | 7 | 高工资 | | 8 | 低工资 | +----+-----------+ rows in set (0.00 sec)
(2)当没有工资的时候,用0代替:
mysql> select ifnull(salary,0) from salary; +------------------+ | ifnull(salary,0) | +------------------+ | 1000.00 | | 2000.00 | | 3000.00 | | 4000.00 | | 5000.00 | | 6000.00 | | 7000.00 | | 0.00 | +------------------+ rows in set (0.00 sec)
(3)用case when来实现例子:
mysql> select id,case when salary>5000 then ‘高工资‘ else ‘低工资‘ end from salary; +----+-------------------------------------------------------------+ | id | case when salary>5000 then ‘高工资‘ else ‘低工资‘ end | +----+-------------------------------------------------------------+ | 1 | 低工资 | | 2 | 低工资 | | 3 | 低工资 | | 4 | 低工资 | | 5 | 低工资 | | 6 | 高工资 | | 7 | 高工资 | | 8 | 低工资 | +----+-------------------------------------------------------------+ rows in set (0.00 sec)
(4)当工资是1000的为特低工资,工资为2000的为低工资,其余为高工资:
mysql> select id,case salary when 1000 then ‘特低工资‘ when 2000 then ‘低工资‘ else ‘高工资‘ end from salary; +----+-------------------------------------------------------------------------------------------+ | id | case salary when 1000 then ‘特低工资‘ when 2000 then ‘低工资‘ else ‘高工资‘ end | +----+-------------------------------------------------------------------------------------------+ | 1 | 特低工资 | | 2 | 低工资 | | 3 | 高工资 | | 4 | 高工资 | | 5 | 高工资 | | 6 | 高工资 | | 7 | 高工资 | | 8 | 高工资 | +----+-------------------------------------------------------------------------------------------+ rows in set (0.00 sec)
其他函数
MySQL内置的函数还有很多,这里就不一一介绍了,具体的可以参考官方的文档,里面也有举了很多。
下面再来谈下平时可能用的比较少的自定义函数,自定义函数语法如下:
CREATE FUNCTION func_name([parameter1,parameter2...])
RETURNS type
runtime_body
下面就来创建一个函数,比如自定义一个两个整数的加法函数:
DELIMITER $ CREATE FUNCTION mysum(n1 INT,n2 INT) RETURNS INT BEGIN DECLARE num int DEFAULT 0; SET num = n1 + n2; RETURN(NUM); END $ DELIMITER ;
执行函数使用select即可:
mysql> SELECT mysum(1,2); +------------+ | mysum(1,2) | +------------+ | 3 | +------------+ row in set (0.00 sec)
删除自定函数使用:
DROP FUNCTION func_name
比如删除上面创建的函数:
mysql> drop function mysum; Query OK, 0 rows affected (0.00 sec)
Mysql常用函数总结(二)
标签:cto sql mit 格式 ifnull -- 需要 oct 提高