我們在開發過程中,經常需要針對一列,基於條件邏輯來返回一個值,那麼,這時候就需要使用到CASE表達式了。
例如,以下對Products表的查詢就在SELECT語句中使用了CASE表達式,以生成用於描述categoryid列取值的信息。
SQL代碼如下:
-- 設置數據庫上下文 USE TSQLFundamentals2008; GO SELECT productid,productname,categoryid, CASE categoryid WHEN 1 THEN 'Beverages' WHEN 2 THEN 'Condiments' WHEN 3 THEN 'Dairy Products' WHEN 4 THEN 'Confections' WHEN 5 THEN 'Grains/Cereals' WHEN 6 THEN 'Meat/Poultry' WHEN 7 THEN 'Produce' WHEN 8 THEN 'Seafood' ELSE 'Unkown Category' END AS categoryname FROM Production.Products;
查詢結果:
可以是任意數值,但實際上編譯系統會把這個表達式強制轉成邏輯值,一般地false都為0;1或任何非零數值都是true,具體要看什麼語言的。
判斷題
1.if語句中的表達式不限於邏輯表達式,可以是任意的數值類型。【Y 】
2.switch語句可以用if語句完全代替。【Y 】
3.switch語句的case表達式必須是常量表達式。【 Y】
4.if語句,switch語句可以嵌套,而且嵌套的層數沒有限制。【Y 】
5.條件表達式可以取代if語句,或者用if語句取代條件表達式。【N 】
6.switch語句的各個case和default的出現次序不影響執行結果。【N 】
7.多個case可以執行相同的程序段。【Y 】
8.內層break語句可以終止嵌套的switch,使最外層的switch結束。【 N】
9.switch語句的case分支可以使用{ }復合語句,多個語句序列。【Y 】
10.switch語句的表達式與case表達式的類型必須一致。【Y 】
11.在switch多分支中,break語句可使流程立即跳出switch語句體。【Y 】
12.if (a=<b) x++;是合法的C語句。【 N】
13.if必須有else與之配對。【N 】
'a'||'A'和'b'||'B'和'c'||'C'這3個表達式都是一個邏輯表達式,它們的值都是1,所以就會出現這樣的提示,要想實現你這樣的功能,可以這樣
case 'a':
case 'A':
cout << "成績為90-100。";
break;
case 'b':
case |'B':
cout << "成績為80-90。";
break;
case ‘c':
case 'C':
cout << "成績為70-60。";
break;
default :
cout << "成績為不及格!";