鉴客 MySQL 的 CASE WHEN 语句

代码片段(4)

[代码] 使用CASE WHEN进行字符串替换处理

01/*
02 
03mysql> select* from sales;
04+-----+------------+--------+--------+--------+------+------------+
05| num | name      | winter | spring | summer | fall | category   |
06+-----+------------+--------+--------+--------+------+------------+
07|   1 | Java       |   1067 |    200 |    150 |  267 | Holiday    |
08|   2 | C          |    970 |    770 |    531 |  486 | Profession |
09|   3 | JavaScript |     53 |     13 |     21 |  856 | Literary   |
10|   4 | SQL        |    782 |    357 |    168 |  250 | Profession |
11|   5 | Oracle     |    589 |    795 |    367 |  284 | Holiday    |
12|   6 | MySQL      |    953 |    582 |    336 |  489 | Literary   |
13|   7 | Cplus      |    752 |    657 |    259 |  478 | Literary   |
14|   8 | Python     |     67 |     23 |     83 |  543 | Holiday    |
15|   9 | PHP        |    673 |     48 |    625 |   52 | Profession |
16+-----+------------+--------+--------+--------+------+------------+
179 rowsin set (0.01 sec)
18 
19mysql> SELECTname AS Name,
20    -> CASE category
21    -> WHEN "Holiday" THEN "Seasonal"
22    -> WHEN "Profession" THEN "Bi_annual"
23    -> WHEN "Literary" THEN "Random" ENDAS "Pattern"
24    -> FROM sales;
25+------------+-----------+
26| Name      | Pattern   |
27+------------+-----------+
28| Java       | Seasonal  |
29| C          | Bi_annual |
30| JavaScript | Random    |
31| SQL        | Bi_annual |
32| Oracle     | Seasonal  |
33| MySQL      | Random    |
34| Cplus      | Random    |
35| Python     | Seasonal  |
36| PHP        | Bi_annual |
37+------------+-----------+
389 rowsin set (0.00 sec)
39 
40 
41*/
42Drop tablesales;
43   
44CREATE TABLEsales(
45    num MEDIUMINTNOT NULL AUTO_INCREMENT,
46    nameCHAR(20),
47    winter INT,
48    spring INT,
49    summer INT,
50    fall INT,
51    category CHAR(13),
52    primarykey(num)
53)type=MyISAM;
54 
55 
56insert intosales value(1, 'Java', 1067 , 200, 150, 267,'Holiday');
57insert intosales value(2, 'C',970,770,531,486,'Profession');
58insert intosales value(3, 'JavaScript',53,13,21,856,'Literary');
59insert intosales value(4, 'SQL',782,357,168,250,'Profession');
60insert intosales value(5, 'Oracle',589,795,367,284,'Holiday');
61insert intosales value(6, 'MySQL',953,582,336,489,'Literary');
62insert intosales value(7, 'Cplus',752,657,259,478,'Literary');
63insert intosales value(8, 'Python',67,23,83,543,'Holiday');
64insert intosales value(9, 'PHP',673,48,625,52,'Profession');
65 
66select * from sales;
67 
68 
69SELECT nameAS Name,
70CASE category
71WHEN "Holiday"THEN "Seasonal"
72WHEN "Profession"THEN "Bi_annual"
73WHEN "Literary"THEN "Random" END AS "Pattern"
74FROM sales;

[代码] 简单语句

1SELECT CASEWHEN 10*2=30 THEN'30 correct'
2   WHEN10*2=40 THEN '40 correct'
3   ELSE'Should be 10*2=20'
4END;

[代码] 多重表达式

1SELECT CASE10*2
2   WHEN20 THEN '20 correct'
3   WHEN30 THEN '30 correct'
4   WHEN40 THEN '40 correct'
5END;

[代码] 在SELECT查询中使用CASE WHEN

01/*
02mysql> SELECTName, RatingID ASRating,
03    ->    CASE RatingID
04    ->       WHEN 'R' THEN 'Under 17 requires an adult.'
05    ->       WHEN 'X' THEN 'No one 17 and under.'
06    ->       WHEN 'NR' THEN 'Use discretion when renting.'
07    ->       ELSE 'OK to rent to minors.'
08    ->    END AS Policy
09    -> FROM DVDs
10    -> ORDER BY Name;
11+-----------+--------+------------------------------+
12| Name     | Rating | Policy                       |
13+-----------+--------+------------------------------+
14| Africa    | PG     | OK torent to minors.        |
15| Amadeus   | PG     | OK torent to minors.        |
16| Christmas | NR     | Use discretion when renting. |
17| Doc       | G      | OK torent to minors.        |
18| Falcon    | NR     | Use discretion when renting. |
19| Mash      | R      | Under 17 requires an adult.  |
20| Show      | NR     | Use discretion when renting. |
21| View     | NR     | Use discretion whenrenting. |
22+-----------+--------+------------------------------+
238 rowsin set (0.01 sec)
24 
25 
26*/
27 
28Drop tableDVDs;
29 
30CREATE TABLEDVDs (
31   ID SMALLINT NOT NULL AUTO_INCREMENT PRIMARYKEY,
32   NameVARCHAR(60) NOTNULL,
33   NumDisks TINYINTNOT NULL DEFAULT 1,
34   RatingID VARCHAR(4) NOTNULL,
35   StatID CHAR(3) NOTNULL
36)
37ENGINE=INNODB;
38 
39INSERT INTODVDs (Name, NumDisks, RatingID, StatID)
40VALUES ('Christmas', 1,'NR', 's1'),
41       ('Doc',       1,'G''s2'),
42       ('Africa',    1,'PG', 's1'),
43       ('Falcon',    1,'NR', 's2'),
44       ('Amadeus',   1,'PG', 's2'),
45       ('Show',      2,'NR', 's2'),
46       ('View',      1,'NR', 's1'),
47       ('Mash',      2,'R''s2');
48   
49 
50SELECT Name, RatingIDAS Rating,
51   CASERatingID
52      WHEN'R' THEN 'Under 17 requires an adult.'
53      WHEN'X' THEN 'No one 17 and under.'
54      WHEN'NR' THEN 'Use discretion when renting.'
55      ELSE'OK to rent to minors.'
56   ENDAS Policy
57FROM DVDs
58ORDER BYName;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值