情况下
价值
当compare_value
然后结果
(当compare_value
然后结果
...][其他结果
)结束第一个
情况下
语法返回结果
第一
比较是正确的。第二种语法返回第一个为真条件的结果。如果没有比较或条件为真,则结果为后价值
=compare_value
其他的
返回,或者零
如果没有其他的
部分。请注意的语法
情况下
操作符这里描述的与SQL略有不同情况下
声明中描述的第13.6.5.1节,“CASE语句”,以便在存储的程序中使用。的情况下
语句不能有其他零
条款,终止于结束案例
而不是结束
.类型的返回类型
情况下
表达式result是所有结果值的聚合类型:mysql> SELECT CASE 1 WHEN 1 THEN ' 1 ' -> WHEN 2 THEN 'two' ELSE 'more' END;-> ' 1 ' 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;- >零
如果
expr1
是真正的
(
和expr1
< > 0
),expr1
< >零如果()
返回expr2
.否则,它将返回expr3
.请注意还有一个
如果
声明,不同于如果()
函数这里描述。看到第13.6.5.2节,“IF声明”.如果只有一个
expr2
或expr3
显式地零
的结果类型如果()
函数的类型是非零
表达式。的默认返回类型
如果()
(当它被存储到一个临时表时可能会有影响)计算如下:如果
expr2
或expr3
产生一个字符串,结果就是一个字符串。如果
expr2
和expr3
都是字符串,如果其中一个字符串是区分大小写的,则结果是区分大小写的。如果
expr2
或expr3
产生一个浮点值,结果是一个浮点值。如果
expr2
或expr3
产生一个整数,结果就是一个整数。
mysql >选择如果(1 > 2、2、3);-> 3 mysql> SELECT IF(1<2,'yes','no');——>“是的”mysql >选择如果(比较字符串(“测试”、“test1”),“不”,“是的”);- - - - - - >“不”
如果
expr1
不是零
,IFNULL ()
返回expr1
;否则它会返回expr2
.mysql >选择IFNULL (1,0);-> 1 mysql> SELECT IFNULL(NULL,10);-> 10 mysql> SELECT IFNULL(1/0,10);-> 10 mysql> SELECT IFNULL(1/0,'yes');——>“是的”
的默认返回类型
IFNULL (
是更”一般”这两个表达式的顺序expr1
,expr2
)字符串
,真正的
,或整数
.考虑一个基于表达式的表的情况,或者MySQL必须在内部存储由返回的值IFNULL ()
在临时表中:mysql> CREATE TABLE tmp SELECT IFNULL(1,'test') AS test;mysql >描述tmp;+-------+--------------+------+-----+---------+-------+ | 字段默认零关键| | | | |类型多 | +-------+--------------+------+-----+---------+-------+ | 测试| varbinary(4) |不 | | | | +-------+--------------+------+-----+---------+-------+
类的类型
测试
列是VARBINARY (4)
(一个字符串类型)。返回
零
如果
是否为true,否则返回expr1
=expr2
expr1
.这个等于情况下
.expr1
=expr2
那么其他零expr1
结束返回值的类型与第一个参数相同。
mysql >选择NULLIF (1,1);-> NULL mysql> SELECT NULLIF(1,2);- > 1
请注意MySQL评估
expr1
如果参数不相等,则为两次。