IF(expr1,expr2,expr3)
如果expr1是TRUE(expr1<>0且expr1<>NULL),那么IF()返回expr2,否则它返回expr3。IF()返回一个数字或字符串值,取决于它被使用的上下文。
MySQL的IF()函数也可以建立一个简单的条件测试,这个函数有三个参数,第一个是要被判断的表达式,如果表达式为真,IF()将会返回第二个参数,如果为假,IF()将会返回第三个参数。
mysql> SELECT * FROM T_VIDEO;
+----+-------------+----------+----------+-------------------------------------------+--------------+-----------------+-----------+--------+
| id | code_number | name | director | starring | release_time | production_area | showtimes | hits |
+----+-------------+----------+----------+-------------------------------------------+--------------+-----------------+-----------+--------+
| 1 | F_C_001 | 心花怒放 | 宁浩 | | 2014-09-30 | 中国 | 0 | 0 |
| 2 | F_C_002 | 黄金时代 | 许鞍华 | 汤唯 冯绍峰 王志文 朱亚文 黄轩 | 2014-10-01 | 中国 | 100 | 102400 |
| 3 | F_C_003 | 食人虫 | 严嘉 | 夏梓桐 张梓琳 王传君 丁春诚 | 2014-10-10 | 中国 | 121 | 102100 |
| 4 | F_C_004 | 一生一世 | 邹佡 | 谢霆锋 高圆圆 杜海涛 洛诗 林雪 车晓 | 2014-09-05 | 中国 | 100 | 102421 |
| 5 | F_C_005 | 亲爱的 | 陈可辛 | 赵薇 黄渤 佟大为 郝蕾 张译 张雨绮 | 2014-09-25 | 中国 | 100 | 102422 |
| 6 | F_C_006 | 闺蜜 | 黄真真 | 陈意涵 薛凯琪 杨子姗 余文乐 钟汉良 吴建豪 | 2014-07-31 | 中国 | 100 | 102434 |
+----+-------------+----------+----------+-------------------------------------------+--------------+-----------------+-----------+--------+
6 rows in set
mysql> SELECT CASE ID WHEN 1 THEN ‘心花怒放‘ WHEN 2 THEN ‘黄金时代‘ WHEN 3 THEN ‘食人虫‘ ELSE ‘未知‘ END AS ‘电影名‘FROM T_VIDEO WHERE ID=1;
+----------+
| 电影名 |
+----------+
| 心花怒放 |
+----------+
1 row in set
七、格式化函数
DATE_FORMAT(date,fmt) 依照字符串fmt格式化日期date值
FORMAT(x,y) 把x格式化为以逗号隔开的数字序列,y是结果的小数位数
INET_ATON(ip) 返回IP地址的数字表示
INET_NTOA(num) 返回数字所代表的IP地址
TIME_FORMAT(time,fmt) 依照字符串fmt格式化时间time值
其中最简单的是FORMAT()函数,它可以把大的数值格式化为以逗号间隔的易读的序列。
示例:
SELECT FORMAT(34234.34323432,3);
SELECT DATE_FORMAT(NOW(),‘%W,%D %M %Y %r‘);
SELECT DATE_FORMAT(NOW(),‘%Y-%m-%d‘);
SELECT DATE_FORMAT(19990330,‘%Y-%m-%d‘);
SELECT DATE_FORMAT(NOW(),‘%h:%i %p‘);
SELECT INET_ATON(‘10.122.89.47‘);
SELECT INET_NTOA(175790383);
八、类型转化函数
为了进行数据类型转化,MySQL提供了CAST()函数,它可以把一个值转化为指定的数据类型。类型有:BINARY,CHAR,DATE,TIME,DATETIME,SIGNED,UNSIGNED
示例:
SELECT CAST(NOW() AS SIGNED INTEGER),CURDATE()+0;
SELECT ‘f‘=BINARY ‘F‘,‘f‘=CAST(‘F‘ AS BINARY);
九、系统信息函数
DATABASE() 返回当前数据库名
BENCHMARK(count,expr) 将表达式expr重复运行count次
CONNECTION_ID() 返回当前客户的连接ID
FOUND_ROWS() 返回最后一个SELECT查询进行检索的总行数
USER()或SYSTEM_USER() 返回当前登陆用户名
VERSION() 返回MySQL服务器的版本
示例:
SELECT DATABASE(),VERSION(),USER();
SELECTBENCHMARK(9999999,LOG(RAND()*PI()));#该例中,MySQL计算LOG(RAND()*PI())表达式9999999次。