mysql流程控制函数

coding

MySQL处理函数之流程控制函数

 May 5, 2016 3:44:45 PM

 

 luo

 

 638

摘要 :MySQL内置函数之流程控制函数整理。MySQL中列可以将字段看作变量来使用,变量的值就是这个列对应的每一行的记录。

[TOC]

  MySQL中列可以将字段看作变量来使用,变量的值就是这个列对应的每一行的记录。
  在使用select,update,delete语句以及子句where、order by、having中,我们可以使用MySQL内置函数。

流程控制函数

CASE WHEN THEN 函数

语法:

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 ;

函数用法说明:
  1. 在第一个方案的返回结果中, value=compare-value 。
  2. 而第二个方案的返回结果是第一种情况的真实结果。如果没有匹配的结果值,则返回结果为 ELSE 后的结果,如果没有 ELSE 部分,则返回值为 NULL。

示例

mysql> SELECT CASE 1 WHEN 1 THEN "one" WHEN 2 THEN "two" ELSE "more" END;

+------------------------------------------------------------+

| 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;

+--------------------------------------------+

| CASE WHEN 1>0 THEN "true" ELSE "false" END |

+--------------------------------------------+

| true |

+--------------------------------------------+

mysql> SELECT CASE BINARY "B" WHEN "a" THEN 1 WHEN "b" THEN 2 END;

+-----------------------------------------------------+

| CASE BINARY "B" WHEN "a" THEN 1 WHEN "b" THEN 2 END |

+-----------------------------------------------------+

| NULL |

+-----------------------------------------------------+

1 row in set (0.00 sec)

mysql> SELECT CASE BINARY "B" WHEN "a" THEN 1 WHEN "B" THEN 2 END;

+-----------------------------------------------------+

| CASE BINARY "B" WHEN "a" THEN 1 WHEN "B" THEN 2 END |

+-----------------------------------------------------+

| 2 |

+-----------------------------------------------------+

BINARY 属性是指定列的字符集的二元 校对规则的简写。排序和比较基于数值字符值。

IF 函数

IF(expr1,expr2,expr3)
  如果 expr1 是TRUE (expr1 <> 0 and expr1 <> NULL),则 IF() 的返回值为expr2; 否则返回值则为 expr3。

IF() 函数 的返回值为数字值或字符串值,具体情况视其所在语境而定。

示例

mysql> SELECT IF(1>2,2,3);

+-------------+

| IF(1>2,2,3) |

+-------------+

| 3 |

+-------------+

mysql> SELECT IF(1<2,'yes','no');

+--------------------+

| IF(1<2,'yes','no') |

+--------------------+

| yes |

+--------------------+

mysql> SELECT IF(STRCMP('test','test1'),'no','yes');

+---------------------------------------+

| IF(STRCMP('test','test1'),'no','yes') |

+---------------------------------------+

| no |

+---------------------------------------+

mysql> SELECT IF(STRCMP('test','test'),'no','yes');

+--------------------------------------+

| IF(STRCMP('test','test'),'no','yes') |

+--------------------------------------+

| yes |

+--------------------------------------+

STRCMP(expr1,expr2)
若所有的字符串均相同,则返回STRCMP(),若根据当前分类次序,第一个参数小于第二个,则返回 -1,其它情况返回 1 。

mysql> SELECT IF(0.1,1,0);

+-------------+

| IF(0.1,1,0) |

+-------------+

| 1 |

+-------------+

mysql> SELECT IF(0.1<>0,1,0);

+----------------+

| IF(0.1<>0,1,0) |

+----------------+

| 1 |

+----------------+

IFNULL 函数

IFNULL(expr1,expr2)
假如expr1 不为 NULL,则 IFNULL() 的返回值为 expr1; 否则其返回值为 expr2。

IFNULL() 函数的返回值是数字或是字符串,具体情况取决于其所使用的语境。

示例

mysql> SELECT IFNULL(1,0);

+-------------+

| IFNULL(1,0) |

+-------------+

| 1 |

+-------------+

mysql> SELECT IFNULL(NULL,10);

+-----------------+

| IFNULL(NULL,10) |

+-----------------+

| 10 |

+-----------------+

mysql> SELECT IFNULL(1/0,10);

+----------------+

| IFNULL(1/0,10) |

+----------------+

| 10.0000 |

+----------------+

mysql> SELECT IFNULL(1/0,'yes');

+-------------------+

| IFNULL(1/0,'yes') |

+-------------------+

| yes |

+-------------------+

NULLIF 函数

NULLIF(expr1,expr2)
  如果 expr1 = expr2 为真,返回 NULL,否则返回 expr1。它等同于 CASE WHEN x = y THEN NULL ELSE x END

注意:如果参数不相等,在 MySQL 中,expr1 被求值两次。

示例

mysql> SELECT NULLIF(1,2);

+-------------+

| NULLIF(1,2) |

+-------------+

| 1 |

+-------------+

mysql> SELECT NULLIF(1,1);

+-------------+

| NULLIF(1,1) |

+-------------+

| NULL |

+-------------+

以上是 mysql流程控制函数 的全部内容, 来源链接: utcz.com/z/509372.html

回到顶部