以下内容基于MySQL 5.6及更高,大部分函数5.5也基本适用,更低版本请参考对应版本手册,其内容整理自官方。
mysql常用函数被分为五类,分别为:
①Control Flow:基于一个表达式的结果集选择不同的值(控制流函数);
②String:字符串函数;
http://blog.itpub.net/29773961/viewspace-1813545/
③Date and time:日期和时间;
http://blog.itpub.net/29773961/viewspace-1808967/
④Numeric:数字函数;
http://blog.itpub.net/29773961/viewspace-1813556/
⑤Aggregate:基于一列的多个值返回单一值(聚合函数);
http://blog.itpub.net/29773961/viewspace-1813589/
【Control Flow】:
IF():基于表达式的结果集选择两个不同的值
-
mysql> SELECT IF(2 > -3, 'YES', 'NO');
-
+-------------------------+
-
| IF(2 > -3, 'YES', 'NO') |
-
+-------------------------+
-
| YES |
-
+-------------------------+
-
1 row in set (0.00 sec)
另一个有意思的比较:
-
mysql> SELECT IF(STRCMP('test','test1'),'no','yes') RESULT;
-
+--------+
-
| RESULT |
-
+--------+
-
| no |
-
+--------+
-
1 row in set (0.00 sec)
CASE:
-
mysql> SET @a=1;
-
1 row in set (0.00 sec)
-
-
mysql> SELECT CASE @a WHEN 1 THEN 'one' WHEN 2 THEN 'two' ELSE 'more' END RESULT;
-
+--------+
-
| RESULT |
-
+--------+
-
| one |
-
+--------+
-
1 row in set (0.00 sec)
-
-
mysql> SELECT CASE WHEN 1>0 THEN 'true' ELSE 'false' END RESULT;
-
+--------+
-
| RESULT |
-
+--------+
-
| true |
-
+--------+
-
1 row in set (0.00 sec)
-
-
-
mysql> SELECT CASE '1' WHEN 'a' THEN 'true' WHEN 'b' THEN 'true' END RESULT; -- 如果没有else处理,则返回NULL
-
+--------+
-
| RESULT |
-
+--------+
-
| NULL |
-
+--------+
-
1 row in set (0.00 sec)
IFNULL(expr1,expr2):如果expr1为null,返回expr2,否则返回expr1。
-
mysql> SELECT IFNULL(NULL,'hi') test1,
-
-> IFNULL(NULL,234) test2,
-
-> IFNULL(2/0,456) test3,
-
-> IFNULL(3/3,123) test4;
-
+-------+-------+----------+--------+
-
| test1 | test2 | test3 | test4 |
-
+-------+-------+----------+--------+
-
| hi | 234 | 456.0000 | 1.0000 |
-
+-------+-------+----------+--------+
-
1 row in set (0.00 sec)
结果集为什么为456.0000,1.0000是因为mysql中默认的除法将保留4位小数,比如:
-
mysql> select 3/3;
-
+--------+
-
| 3/3 |
-
+--------+
-
| 1.0000 |
-
+--------+
-
1 row in set (0.00 sec)
NULLIF(expr1,expr2):如果expr1=expr2,返回NULL,反之返回expr1。
-
mysql> SELECT NULLIF(-1,3) RESULT, NULLIF('test','test') RESULT;
-
+--------+--------+
-
| RESULT | RESULT |
-
+--------+--------+
-
| -1 | NULL |
-
+--------+--------+
-
1 row in set (0.00 sec)
-
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29773961/viewspace-1813557/
,如需转载,请注明出处,否则将追究法律责任。