IF
Description
The IF()
function returns a value if a condition is TRUE
, or another value if a condition is FALSE
.
Syntax
> IF(expr1,expr2,expr3)
If expr1 is TRUE (expr1 <> 0 and expr1 IS NOT NULL), IF() returns expr2. Otherwise, it returns expr3.
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:
If expr2 or expr3 produce a string, the result is a string.
If expr2 and expr3 are both strings, the result is case-sensitive if either string is case-sensitive.
If expr2 or expr3 produce a floating-point value, the result is a floating-point value.
If expr2 or expr3 produce an integer, the result is an integer.
Examples
mysql> SELECT IF(1>2,2,3);
+-----------------+
| if(1 > 2, 2, 3) |
+-----------------+
| 3 |
+-----------------+
1 row in set (0.01 sec)
mysql> SELECT IF(1<2,'yes','no');
+--------------------+
| if(1 < 2, yes, no) |
+--------------------+
| yes |
+--------------------+
1 row in set (0.00 sec)
CREATE TABLE t1 (st varchar(255) NOT NULL, u int(11) NOT NULL);
INSERT INTO t1 VALUES ('a',1),('A',1),('aa',1),('AA',1),('a',1),('aaa',0),('BBB',0);
mysql> select if(u=1,st,st) s from t1 order by s;
+------+
| s |
+------+
| A |
| AA |
| BBB |
| a |
| a |
| aa |
| aaa |
+------+
7 rows in set (0.00 sec)
mysql> select if(u=1,st,st) s from t1 where st like "%a%" order by s;
+------+
| s |
+------+
| a |
| a |
| aa |
| aaa |
+------+
4 rows in set (0.00 sec)
Constraints
Parameters BIGINT and VARCHAR are not supported with the function ‘if’.