MySQL D4

Case When语句

先执行第一个条件,然后执行第二个条件。。。依次类推

SELECT 列名, 

CASE WHEN [condition] THEN result 

          WHEN [condition] THEN result 

          WHEN [condition] THEN result 

         WHEN [condition] THEN result 

         … 

         ELSE result END

FROM table_name; 


IF语句

IF (condition,result_true,result_false),AS table_name


判断空值Null Value

通过IS NULL语句判断是否为空值

CASE WHEN 列名 IS NULL THEN 'TRUE' ELSE 'FALSE' END

注:在工作中以下三种情况(① NULL ②‘NULL’③ (全部是空格))都是无 效值,但在用代码处理时处理方法有不同的处理方法,所以要用不同的语句根据不 同的情况进行更改。


练习

USE ClassicModels; 

给OrderDetails新加两列

列1: Price_Range, 基于priceEach获得

添加一个名为Price_Range的列,在OrderDetails中有一列名为priceEach(单 价),单价有不同的数值,新的一列的内容是根据单价判断后的内容,是便宜中等还是贵,具体的判断标准如下: 0 <= priceEach <= 50, Cheap 51 <= priceEach <= 100, Medium priceEach >= 101, Expensive (此列用case when完成)

列2: Volume_Range, 基于quantityOrdered获得

添加一个名为Volume_Range的列,在OrderDetails中有一列名为 quantityOrdered(订单数量), 订单数量有不同的数值,新的一列的内容是根据订单数量判断后的内容,是高还是低,具体的判断标准如下: quantityOrdered <= 40, Low quantityOrdered > 40, High (此列用IF或Case when完成)

提示:可以通过一段话来创造2个新的列。

答案

#调用数据库

USE ClassicModels;

## 给OrderDetails新加两列

/* 列1: Price_Range, 基于priceEach获得

0 <= priceEach <= 50, Cheap

51 <= priceEach <= 100, Medium

priceEach >= 101, Expensive

此列用case when完成

*/

SELECT priceEach,

(CASE WHEN priceEach BETWEEN 0 AND 50 THEN 'Cheap'

  WHEN priceEach BETWEEN 51 AND 100 THEN 'Medium'

  ElSE 'Expensive' END) AS Price_Range

FROM orderdetails;

/*列2: Volume_Range, 基于quantityOrdered获得

quantityOrdered <= 40, Low

quantityOrdered > 40, High

此列用IF或Case when完成

*/

SELECT quantityOrdered,

(IF(quantityOrdered<=40 ,'Low', 'High')) AS Volume_Range1

FROM orderdetails;

SELECT quantityOrdered,

(CASE WHEN quantityOrdered<=40 THEN 'Low'

ELSE 'High' END) AS Volume_Range2

FROM orderdetails;

你可能感兴趣的:(MySQL D4)