mysql流程控制函数

大憨熊 提交于 2021-02-18 11:46:56

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 |
+-------------+
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!