10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 本手册下载 本手册摘录

12.5流量控制功能

表12.7流量控制操作符

的名字 描述
情况下 情况下运营商
如果() If / else构造
IFNULL () 零if / else结构
NULLIF () 如果expr1 = expr2返回NULL

  • 情况下价值compare_value然后结果(当compare_value然后结果...][其他结果)结束

    情况下条件然后结果(当条件然后结果...][其他结果)结束

    第一个情况下语法返回结果第一价值compare_value比较是正确的。第二种语法返回第一个为真条件的结果。如果没有比较或条件为真,则结果为后其他的返回,或者如果没有其他的部分。

    请注意

    的语法情况下操作符这里描述的与SQL略有不同情况下声明中描述的第13.6.5.1节,“CASE语句”,以便在存储的程序中使用。的情况下语句不能有其他零条款,终止于结束案例而不是结束

    类型的返回类型情况下表达式result是所有结果值的聚合类型:

    • 如果所有类型都是数值型,则聚合类型也是数值型:

      • 如果至少有一个参数是双精度的,则结果是双精度的。

      • 否则,如果至少有一个参数是小数,结果是小数

      • 否则,结果是一个整数类型(有一个例外):

        • 如果所有整数类型都是有符号的或无符号的,则结果是相同的符号,并且精度是所有指定整数类型中最高的(即:非常小的整数短整型MEDIUMINTINT,或长整型数字).

        • 如果有符号和无符号整数类型的组合,结果是有符号的,精度可能更高。例如,如果类型是有符号的INT和无符号INT,结果是有符号的长整型数字

        • 异常是无符号的长整型数字与任何带符号整数类型组合。结果是小数具有足够的精度和0刻度。

    • 如果所有类型都是,结果是.否则,参数的处理方法类似于长整型数字

    • 如果所有类型都是一年,结果是一年.否则,一年参数的处理方法类似于INT

    • 如果所有类型都是字符串(字符VARCHAR),结果是VARCHAR最大长度由操作数的最长字符长度决定。

    • 如果所有类型都是字符或二进制字符串,则结果为VARBINARY

    • 枚举受到类似的对待VARCHAR;结果是VARCHAR

    • 如果所有类型都是JSON,结果是JSON

    • 如果所有类型都是时态的,则结果是时态的:

    • 如果所有类型都是几何,结果是几何

    • 如果有任何类型,结果是

    • 对于所有其他类型组合,结果是VARCHAR

    • 文字类型聚合忽略操作数。

    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;- >零
  • 如果(expr1expr2expr3

    如果expr1真正的expr1< > 0expr1< >零),如果()返回expr2.否则,它将返回expr3

    请注意

    还有一个如果声明,不同于如果()函数这里描述。看到第13.6.5.2节,“IF声明”

    如果只有一个expr2expr3显式地的结果类型如果()函数的类型是非表达式。

    的默认返回类型如果()(当它被存储到一个临时表时可能会有影响)计算如下:

    • 如果expr2expr3产生一个字符串,结果就是一个字符串。

      如果expr2expr3都是字符串,如果其中一个字符串是区分大小写的,则结果是区分大小写的。

    • 如果expr2expr3产生一个浮点值,结果是一个浮点值。

    • 如果expr2expr3产生一个整数,结果就是一个整数。

    mysql >选择如果(1 > 2、2、3);-> 3 mysql> SELECT IF(1<2,'yes','no');——>“是的”mysql >选择如果(比较字符串(“测试”、“test1”),“不”,“是的”);- - - - - - >“不”
  • IFNULL (expr1expr2

    如果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 (expr1expr2是更一般这两个表达式的顺序字符串真正的,或整数.考虑一个基于表达式的表的情况,或者MySQL必须在内部存储由返回的值IFNULL ()在临时表中:

    mysql> CREATE TABLE tmp SELECT IFNULL(1,'test') AS test;mysql >描述tmp;+-------+--------------+------+-----+---------+-------+ | 字段默认零关键| | | | |类型多  | +-------+--------------+------+-----+---------+-------+ | 测试| varbinary(4) |不  | | | | +-------+--------------+------+-----+---------+-------+

    类的类型测试列是VARBINARY (4)(一个字符串类型)。

  • NULLIF (expr1expr2

    返回如果expr1expr2是否为true,否则返回expr1.这个等于情况下expr1expr2那么其他零expr1结束

    返回值的类型与第一个参数相同。

    mysql >选择NULLIF (1,1);-> NULL mysql> SELECT NULLIF(1,2);- > 1
    请注意

    MySQL评估expr1如果参数不相等,则为两次。