SELECT中的if_case流程函数分分快三全天计划网站

作者:分分快三全天计划网站
mysql> select nullif(1,1),nullif(123,321);
 ------------- ----------------- 
| nullif(1,1) | nullif(123,321) |
 ------------- ----------------- 
|        NULL |             123 |
 ------------- ----------------- 

 

 

  判断第一个参数expr1为TRUE (expr1 <> 0 and expr1 <> NULL):

    如果一旦和某个when子句后面的值相等则返回相应的then子句后面的值result;

    成功,返回第二个参数expr2

1)simple case的语法结构:

 

mysql> select if(null,'非空','空');
 ------------------------- 
| if(null,'非空','空')    |
 ------------------------- 
| 空                      |
 ------------------------- 

mysql> select userid,if(salary>2000,'high','low') from salary_tab;
 -------- ------------------------------ 
| userid | if(salary>2000,'high','low') |
 -------- ------------------------------ 
|      1 | low                          |
|      2 | low                          |
|      3 | high                         |
|      4 | low                          |
|      5 | low                          |
 -------- ------------------------------ 

mysql> select if(1>2,2,3),if(1<2,'yes','no');
 ------------- -------------------- 
| if(1>2,2,3) | if(1<2,'yes','no') |
 ------------- -------------------- 
|           3 | yes                |
 ------------- -------------------- 

    如果没有else部分则返回null。

分分快三全天计划网站 1

返回值可以是数字、字符串、列值

    如果和所有when子句后面的值都不相等,则返回else子句后面的值;

2)searched  case的语法结构:

注意:

模拟对职员薪水进行分类:

  如果某个when子句后面的条件condition为true,则返回相应的when子句后面的值result;

  如果所有的when子句后面的条件condition都不为true,则返回else子句后面的值;

mysql> select userid,case salary                                             
    -> when 1000 then 'low'
    -> when 2000 then 'med'
    -> when 3000 then 'high'
    -> else '无效值' end salary_grade
    -> from salary_tab;
 -------- -------------- 
| userid | salary_grade |
 -------- -------------- 
|      1 | low          |
|      2 | med          |
|      3 | high         |
|      4 | 无效值        |
|      5 | low          |
 -------- -------------- 

 

  将case后面的值value分别和每个when子句后面的值compare_value进行相等比较:

语义:

NULLIF(expr1,expr2):如果两个参数相等则返回NULL,否则返回第一个参数的值expr1

3、在SQL语句中实现“if-then-else”逻辑计算功能

    如果expr1为空,返回第二个参数 expr2   

  判断第一个参数expr1是否为NULL:

 

语义:

2、IFNULL(expr1,expr2)

mysql> select userid,case
    -> when salary<=1000 then 'low'
    -> when salary=2000 then 'med'
    -> when salary>=3000 then 'high'
    -> else '无效值' end salary_grade
    -> from salary_tab;
 -------- -------------- 
| userid | salary_grade |
 -------- -------------- 
|      1 | low          |
|      2 | med          |
|      3 | high         |
|      4 | 无效值        |
|      5 | low          |
 -------- -------------- 
CASE

    WHEN [condition] THEN result

    [WHEN [condition] THEN result ...]

    [ELSE result]  END

SELECT中的if_case流程函数分分快三全天计划网站。    如果expr1不为空,直接返回expr1;

 

CASE  value

    WHEN  [compare_value] THEN  result

    [WHEN [compare_value] THEN  result ...] 

    [ELSE  result]  END

  ---流程函数在一个SQL语句中实现条件选择

    失败,返回第三个参数expr3

mysql> select ifnull(salary,0) from salary_tab;
 ------------------ 
| ifnull(salary,0) |
 ------------------ 
|          1000.00 |
|          2000.00 |
|          3000.00 |
|             0.00 |
|          1000.00 |
 ------------------ 

mysql> select ifnull(1/0,'yes');
 ------------------- 
| ifnull(1/0,'yes') |
 ------------------- 
| yes               |
 ------------------- 

  ②CASE表达式的数据类型取决于跟在then或else后面的表达式的类型

  如果没有else部分则返回null。

 

SELECT中的if_case流程函数分分快三全天计划网站。 

DQL中常用的流程函数if_case

类型必须相同(可尝试做隐式类型转换),否则出错

mysql> create table salary_tab(userid int not null primary key,salary dec(9,2));
Query OK, 0 rows affected (0.04 sec)

mysql> insert into salary_tab values(1,1000);
mysql> insert into salary_tab values(2,2000);
mysql> insert into salary_tab values(3,3000);
mysql> insert into salary_tab(userid) values(4);
mysql> insert into salary_tab values(5,1000);

mysql> select * from salary_tab;
 -------- --------- 
| userid | salary  |
 -------- --------- 
|      1 | 1000.00 |
|      2 | 2000.00 |
|      3 | 3000.00 |
|      4 |    NULL |
|      5 | 1000.00 |
 -------- --------- 
5 rows in set (0.00 sec)

  有两种形式:simple case和searched case

常用在算术表达式计算和组函数中,用来对null值进行转换处理(返回值是数字或者字符串)

1、IF(expr1,expr2,expr3)

  ①value可以是字面量、表达式或者列名

本文由分分快三计划发布,转载请注明来源

关键词: 分分快三计划