一個CASE表達式的默認返回值類型是任何返回值的相容集合類型,但具體情況視其所在語境而定,如果用在字符串語境中,則返回結果味字符串,如果用在數字語境中,則返回結果為十進制值、實值或整數值.
語法,代碼如下:
- 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
實例,代碼如下:
- SELECT CASE WHEN 10*2=30 THEN '30 correct'
- WHEN 10*2=40 THEN '40 correct'
- ELSE 'Should be 10*2=20'
- END;
復雜點,代碼如下:
- SELECT CASE 10*2
- WHEN 20 THEN '20 correct'
- WHEN 30 THEN '30 correct'
- WHEN 40 THEN '40 correct'
- END;
實例,代碼如下:
- /*
- mysql> SELECT Name, RatingID AS Rating,
- -> CASE RatingID
- -> WHEN 'R' THEN 'Under 17 requires an adult.'
- -> WHEN 'X' THEN 'No one 17 and under.'
- -> WHEN 'NR' THEN 'Use discretion when renting.'
- -> ELSE 'OK to rent to minors.'
- -> END AS Policy
- -> FROM DVDs
- -> ORDER BY Name;
- +-----------+--------+------------------------------+
- | Name | Rating | Policy |
- +-----------+--------+------------------------------+
- | Africa | PG | OK to rent to minors. |
- | Amadeus | PG | OK to rent to minors. |
- | Christmas | NR | Use discretion when renting. |
- | Doc | G | OK to rent to minors. |
- | Falcon | NR | Use discretion when renting. |
- | Mash | R | Under 17 requires an adult. |
- | Show | NR | Use discretion when renting. |
- | View | NR | Use discretion when renting. |
- +-----------+--------+------------------------------+
- 8 rows in set (0.01 sec)
- */
- Drop table DVDs;
- CREATE TABLE DVDs (
- ID SMALLINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
- Name VARCHAR(60) NOT NULL,
- NumDisks TINYINT NOT NULL DEFAULT 1,
- RatingID VARCHAR(4) NOT NULL,
- StatID CHAR(3) NOT NULL
- )
- ENGINE=INNODB;
- INSERT INTO DVDs (Name, NumDisks, RatingID, StatID)
- VALUES ('Christmas', 1, 'NR', 's1'),
- ('Doc', 1, 'G', 's2'),
- ('Africa', 1, 'PG', 's1'),
- ('Falcon', 1, 'NR', 's2'),
- ('Amadeus', 1, 'PG', 's2'),
- ('Show', 2, 'NR', 's2'),
- ('View', 1, 'NR', 's1'),
- ('Mash', 2, 'R', 's2');
- SELECT Name, RatingID AS Rating,
- CASE RatingID
- WHEN 'R' THEN 'Under 17 requires an adult.'
- WHEN 'X' THEN 'No one 17 and under.'
- WHEN 'NR' THEN 'Use discretion when renting.'
- ELSE 'OK to rent to minors.'--Vevb.com
- END AS Policy
- FROM DVDs
- ORDER BY Name;
新聞熱點
疑難解答