今天才用到了这几个函数
因为AVG(column)得出了null,又不想写在java代码就编码到sql中了。
下面是mysql官方文档
http://dev.mysql.com/doc/refman/5.1/en/control-flow-functions.html
Name Description
CASE Case operator
IF() If/else construct
IFNULL() Null if/else construct
NULLIF() Return NULL if expr1 = expr2
CASE value WHEN [compare_value] THEN result [WHEN [compare_value] THEN result ...] [ELSE result] END
CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...] [ELSE result] END
The first version returns the result where value=compare_value. The second version returns the result for the first condition that is true. If there was no matching result value, the result after ELSE is returned, or NULL if there is no ELSE part.
mysql> SELECT CASE 1 WHEN 1 THEN 'one'
-> WHEN 2 THEN 'two' ELSE 'more' END;
-> 'one'
mysql> SELECT CASE WHEN 1>0 THEN 'true' ELSE 'false' END;
-> 'true'
mysql> SELECT CASE BINARY 'B'
-> WHEN 'a' THEN 1 WHEN 'b' THEN 2 END;
-> NULL
The return type of a CASE expression is the compatible aggregated type of all return values, but also depends on the context in which it is used. If used in a string context, the result is returned as a string. If used in a numeric context, the result is returned as a decimal, real, or integer value.
Note
The syntax of the CASE expression shown here differs slightly from that of the SQL CASE statement described in Section 12.7.6.2, “CASE Statement”, for use inside stored programs. The CASE statement cannot have an ELSE NULL clause, and it is terminated with END CASE instead of END.
IF(expr1,expr2,expr3)
If expr1 is TRUE (expr1 <> 0 and expr1 <> NULL) then IF() returns expr2; otherwise it returns expr3. IF() returns a numeric or string value, depending on the context in which it is used.
mysql> SELECT IF(1>2,2,3);
-> 3
mysql> SELECT IF(1<2,'yes','no');
-> 'yes'
mysql> SELECT IF(STRCMP('test','test1'),'no','yes');
-> 'no'
If only one of expr2 or expr3 is explicitly NULL, the result type of the IF() function is the type of the non-NULL expression.
The default return type of IF() (which may matter when it is stored into a temporary table) is calculated as follows.
Expression Return Value
expr2 or expr3 returns a string string
expr2 or expr3 returns a floating-point value floating-point
expr2 or expr3 returns an integer integer
If expr2 and expr3 are both strings, the result is case sensitive if either string is case sensitive.
Note
There is also an IF statement, which differs from the IF() function described here. See Section 12.7.6.1, “IF Statement”.
IFNULL(expr1,expr2)
If expr1 is not NULL, IFNULL() returns expr1; otherwise it returns expr2. IFNULL() returns a numeric or string value, depending on the context in which it is used.
mysql> SELECT IFNULL(1,0);
-> 1
mysql> SELECT IFNULL(NULL,10);
-> 10
mysql> SELECT IFNULL(1/0,10);
-> 10
mysql> SELECT IFNULL(1/0,'yes');
-> 'yes'
The default result value of IFNULL(expr1,expr2) is the more “general” of the two expressions, in the order STRING, REAL, or INTEGER. Consider the case of a table based on expressions or where MySQL must internally store a value returned by IFNULL() in a temporary table:
mysql> CREATE TABLE tmp SELECT IFNULL(1,'test') AS test;
mysql> DESCRIBE tmp;
+-------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| test | varbinary(4) | NO | | | |
+-------+--------------+------+-----+---------+-------+
In this example, the type of the test column is VARBINARY(4).
NULLIF(expr1,expr2)
Returns NULL if expr1 = expr2 is true, otherwise returns expr1. This is the same as CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END.
mysql> SELECT NULLIF(1,1);
-> NULL
mysql> SELECT NULLIF(1,2);
-> 1
Note that MySQL evaluates expr1 twice if the arguments are not equal.
分享到:
相关推荐
Mysql的常用函数整体, 从网上收集的一些常用函数, ...NULLIF()函数将会检验提供的两个参数是否相等,如果相等,则返回NULL,如果不相等,就返回第一个参数。 如:SELECT NULLIF(1,1),NULLIF('A','B'),NULLIF(2+3,4+1);
本文将详细介绍MySQL中的`IFNULL`、`NULLIF`和`ISNULL`这三个函数的用法。 1. `ISNULL()`函数: `ISNULL(expr)`用于检查表达式`expr`是否为NULL。如果`expr`是NULL,`ISNULL()`返回1,否则返回0。它与`expr IS ...
MySQL数据库提供了很多函数包括: 数学函数:数学函数主要用于处理数字,包括整型、浮点数等。 字符串函数:字符串函数是MySQL中最常用的一类函数,字符串函数主要用于处理表中的字符串。 日期和时间函数:MySQL的...
浅谈Mysql中类似于nvl()函数的ifnull()函数 IFNULL()函数是Mysql中一个非常有用的函数,它可以用来检查...IFNULL()、IF()和CASE函数都是Mysql中非常有用的函数,它们可以用来实现各种复杂的逻辑运算和条件判断。
- NULLIF():如果两个参数相等,则返回NULL,否则返回第一个参数。 7. 其他函数: - GROUP_CONCAT():在GROUP BY语句中,将分组内的多个值合并成一个字符串。 - JSON functions:如JSON_ARRAY(), JSON_OBJECT()...
在MySQL数据库中,`IFNULL`, `IF`, 和 `CASE` 都是用来处理逻辑和条件判断的函数,但它们有着不同的用法和适用场景。理解它们的区别对于编写更高效的SQL查询至关重要。 首先,`IFNULL` 函数是最简单的,它的主要...
3. NULLIF函数:NULLIF(expr1,expr2),如果expr1等于expr2,则返回NULL,否则返回expr1。这常用于比较两个字段,当它们相等时,结果设为NULL。 4. CASE函数:CASE...WHEN...THEN...ELSE...END,根据不同的条件返回...
MySQL函数是数据库操作中的核心元素,它们用于处理和操作数据,包括控制流程、字符串操作、数值计算等多个方面。以下是对这些函数的详细说明: 1. **控制流程函数**: - **CASE WHEN THEN** 函数:这是一个条件...
`IFNULL`函数(c)用于处理`NULL`值: ```sql IFNULL(expr1,expr2) ``` 如果`expr1`为`NULL`,则返回`expr2`,否则返回`expr1`。 字符处理函数包括: 1. `ASCII(str)`(a):返回字符串`str`的第一个字符的ASCII码...
MySQL中的`IFNULL()`函数和`NVL()`函数在功能上非常相似,它们都是用于处理NULL值的。当你不确定某个字段是否为NULL时,这些函数可以帮助你提供一个默认值。在本文中,我们将深入探讨`IFNULL()`函数的用法,并与`IF...
IF函数在MySQL中用于执行简单的条件判断。它接收三个参数:expr1是要测试的表达式,expr2是当expr1为真(非零或非NULL)时返回的结果,expr3是expr1为假(零或NULL)时返回的结果。例如,若要根据职员的薪水将他们...
# MySQL函数与触发器详解 本文档将对MySQL中的系统封装函数、自定义函数以及触发器的相关知识进行详细介绍。MySQL作为一款广泛使用的开源关系数据库管理系统,提供了丰富的功能以支持复杂的数据处理需求。其中,...
- **其他函数:** 如 `COALESCE()`, `NULLIF()`, `CASE` 表达式 - **流程控制函数:** 如 `IF()`, `IFNULL()`, `CASE` 表达式 - **分组函数:** 如 `SUM()`, `AVG()`, `MAX()`, `MIN()`, `COUNT()`,这些函数通常...
### MySQL函数大全详解 #### 一、控制流程函数 ##### CASE WHEN THEN 函数 - **语法**: ```sql CASE value WHEN compare-value THEN result [WHEN compare-value THEN result ...] [ELSE result] END ``` ...
4. **NULLIF(expr1,expr2)**:如果expr1等于expr2,则返回NULL,否则返回expr1。Eg1中,1等于1,返回NULL;Eg2中,3不等于4,返回3。 **二、字符串函数** 1. **ASCII(str)**:返回字符串str最左边字符的ASCII码值...
IFNULL 函数用于检测一个表达式的值是否为 NULL,并提供一个默认值作为替换。 - **基本语法**: ```sql IFNULL(expr1, expr2) ``` - **说明**: - 如果 `expr1` 的值不是 NULL,则返回 `expr1`。 - 如果 `expr1...