案件
价值
什么时候compare_value.
然后结果
[什么时候compare_value.
然后结果
...] [别的结果
] 结尾案例
状况
然后结果
[什么时候状况
然后结果
...] [别的结果
] 结尾首先
案件
语法返回结果
为了第一
比较是真的。第二个语法返回一个真实条件的结果。如果没有比较或条件是真的,结果之后价值
=compare_value.
别的
被返回,或空值
如果没有别的
部分。笔记的语法
案件
操作员这里描述的描述略有不同于SQL案件
陈述描述第13.6.5.1节“案例陈述”,用于在存储的程序内使用。这案件
声明不能拥有否则为null.
条款,它终止了结束案例
代替结尾
。返回类型的
案件
表达式结果是所有结果值的聚合类型:如果所有类型都是数字,则聚合类型也是数字:
如果所有类型都是字符或二进制字符串,则结果是
varbinary.
。如果所有类型都是时间,结果是时间:
如果所有类型都是
几何学
,结果是几何学
。对于所有其他类型的组合,结果是
varchar.
。文字
空值
对于类型聚合,忽略操作数。
mysql>选择案例1当1然后'一个' - >当2然后'两个'别的'更终端时;- >'一个'mysql>选择案例1> 0然后'真'否则'false'end;- >'真实'mysql>选择案例二进制'b' - >当'a'然后1 on'b'然后2结束时;- > null.
如果
Expr1.
是真的
(
和Expr1.
<> 0.
),Expr1.
<> null.如果()
回报Expr2.
。否则,它返回Expr3.
。笔记还有一个
如果
陈述,与之不同如果()
功能这里描述。看第13.6.5.2节,“如果声明”。如果只有一个
Expr2.
或者Expr3.
是明确的空值
,结果类型如果()
功能是非的类型空值
表达。默认返回类型
如果()
(当它存储到临时表中可能很重要)计算如下:如果
Expr2.
或者Expr3.
生成字符串,结果是字符串。如果
Expr2.
和Expr3.
都是字符串,如果一个字符串区分大小写,结果是区分大小写的。如果
Expr2.
或者Expr3.
产生浮点值,结果是浮点值。如果
Expr2.
或者Expr3.
生成整数,结果是整数。
mysql>选择if(1> 2,2,3);- > 3 mysql>选择if(1 <2,'是','否');- >'是'mysql>选择if(strcmp('test','test1'),'no','是');- >'否'
如果
Expr1.
不是空值
那ifnull()
回报Expr1.
;否则返回Expr2.
。mysql>选择ifnull(1,0);- > 1 mysql>选择ifnull(null,10);- > 10 mysql>选择ifnull(1/0,10);- > 10 mysql>选择ifnull(1/0,'是');- >'是'
默认返回类型
ifnull(
毕竟是“一般的“两个表达式,按顺序Expr1.
那Expr2.
)细绳
那真实的
, 或者整数
。考虑基于表达式的表的情况,或者MySQL必须在内部存储返回的值ifnull()
在临时表中:MySQL>创建表TMP选择ifnull(1,'测试')作为测试;mysql>描述tmp;+ ------- + ------------ + ------ + ----- + --------- + ------- + |领域|型号null |钥匙|默认额外|+ ------- + ------------ + ------ + ----- + --------- + ------- + | test | varbinary(4) | NO | | | | +-------+--------------+------+-----+---------+-------+
在这个例子中,
测试
列是varbinary(4)
(字符串类型)。回报
空值
如果
是真的,否则退货Expr1.
=Expr2.
Expr1.
。这与案例
。Expr1.
=Expr2.
然后别的别的Expr1.
结尾返回值与第一个参数具有相同的类型。
mysql>选择nullif(1,1);- > null mysql>选择nullif(1,2);- > 1
笔记mysql评估
Expr1.
如果参数不等于,则两次。