全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1743
推到 Plurk!
推到 Facebook!

about 如何在SQL語法中下case

尚未結案
fanny
一般會員


發表:10
回覆:26
積分:7
註冊:2002-07-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-01-23 11:37:43 IP:211.20.xxx.xxx 未訂閱
各位前輩,想請教一個關於sql語法的問題,我想要在select 語法中加入case的判斷該如何寫?
Jeffrey
初階會員


發表:10
回覆:58
積分:38
註冊:2002-04-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-01-23 12:54:51 IP:211.74.xxx.xxx 未訂閱
Help 裡面就有了:    
CASE input_expression
    WHEN when_expression THEN result_expression
        [ ...n ]
    [ 
        ELSE else_result_expression
    END
例:Pno:身分證號碼
SELECT Eno, Ename, Sex = CASE SubString(Pno, 2, 1) 
       WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '' END
FROM Empl
shpeng
初階會員


發表:6
回覆:67
積分:49
註冊:2002-12-21

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-01-23 15:37:29 IP:61.219.xxx.xxx 未訂閱
使用 CASE 的條件式資料處理
CASE 函數可用來運算多個條件 (Condition),並針對每個條件傳回一個數值。CASE 函數的常見用法是以較具可讀性的數值來取代程式碼或縮寫 (Abbreviation)。下列查詢將使用 CASE 函數來將書籍類別重新命名,以便讓它們更好瞭解。    USE pubs
SELECT
   CASE type
      WHEN 'popular_comp' THEN 'Popular Computing'
      WHEN 'mod_cook' THEN 'Modern Cooking'
      WHEN 'business' THEN 'Business'
      WHEN 'psychology' THEN 'Psychology'
      WHEN 'trad_cook' THEN 'Traditional Cooking'
      ELSE 'Not yet categorized'
   END AS Category, 
CONVERT(varchar(30), title) AS "Shortened Title", 
price AS Price
FROM titles
WHERE price IS NOT NULL
ORDER BY 1    以下為結果集:    category            shortened title                Price   
------------------- ------------------------------ ------- 
Business            Cooking with Computers: Surrep 11.95   
Business            Straight Talk About Computers  19.99   
Business            The Busy Executive's Database  19.99   
Business            You Can Combat Computer Stress 2.99    
Modern Cooking      Silicon Valley Gastronomic Tre 19.99   
Modern Cooking      The Gourmet Microwave          2.99    
Popular Computing   But Is It User Friendly?       22.95   
Popular Computing   Secrets of Silicon Valley      20.00   
Psychology          Computer Phobic AND Non-Phobic 21.59   
Psychology          Emotional Security: A New Algo 7.99    
Psychology          Is Anger the Enemy?            10.95   
Psychology          Life Without Fear              7.00    
Psychology          Prolonged Data Deprivation: Fo 19.99   
Traditional Cooking Fifty Years in Buckingham Pala 11.95   
Traditional Cooking Onions, Leeks, and Garlic: Coo 20.95   
Traditional Cooking Sushi, Anyone?                 14.99       (16 row(s) affected)
簡單的說它是一個 Function SELECT (CASE F01 WHEN 1 THEN F02 END) * 2 as F03 FROM TABLE ==取之於斯,用之於斯==
------
==取之於斯,用之於斯==
fanny
一般會員


發表:10
回覆:26
積分:7
註冊:2002-07-19

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-01-27 11:20:19 IP:211.20.xxx.xxx 未訂閱
再請問一下,那如果WHEN 後面要對兩個欄位下判斷要如何下?
shpeng
初階會員


發表:6
回覆:67
積分:49
註冊:2002-12-21

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-01-27 16:39:47 IP:61.219.xxx.xxx 未訂閱
CASE WHEN F01 = '男' and F02 = '射手座' THEN F03 END ==取之於斯,用之於斯==
------
==取之於斯,用之於斯==
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-01-27 16:46:05 IP:210.58.xxx.xxx 未訂閱
引言: 再請問一下,那如果WHEN 後面要對兩個欄位下判斷要如何下?
case 有兩種用法, 一為變數對應值的方式, 另一為一般的條件式. (1) case gender when 'M' then '男' when 'F' then '女' else '不明' end (2) case when gender = '男' and vocation = '學生' then '男學生' when gender = '女' and vocation = '學生' then '女學生' when vocation = '老師' then '老師' else '不是學生也不是老師' end 以上兩個例子希望對你有幫助!!
fanny
一般會員


發表:10
回覆:26
積分:7
註冊:2002-07-19

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-02-05 02:53:18 IP:218.173.xxx.xxx 未訂閱
謝謝各位前輩的幫忙,想再請問一下,下case指令的速度跟用union比起來會差很多嗎?
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-02-05 18:39:14 IP:61.221.xxx.xxx 未訂閱
基本上 CASE 是類似 function 的功能, 以評估的方式進行 結果的計算, 但是 union 是合併結果集的一種運算, 所以無 法進行這兩種不用功能間的比較....
cocodi
一般會員


發表:21
回覆:65
積分:17
註冊:2002-06-27

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-05-01 10:33:32 IP:61.222.xxx.xxx 未訂閱
各為大人: 請問case 是否為MS-SQL獨有語法, 若TABLE 為 .DBF 可否於QUERY中下此語法呢? 若使用 .DBF又得用QUERY是否有其它替代方案呢
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-05-01 10:47:43 IP:61.66.xxx.xxx 未訂閱
引言: 各為大人: 請問case 是否為MS-SQL獨有語法, 若TABLE 為 .DBF 可否於QUERY中下此語法呢? 若使用 .DBF又得用QUERY是否有其它替代方案呢
我做過的資料庫 Interbase, MSSQL 測過 Interbase 不提供, dbf 則更不用說了, 如果是 dbf 建議把要做 when 這段的語法以一個 calcField 來設定, 但 calcField 有先天上的限制, 例如不能 order by!
系統時間:2024-07-02 0:31:04
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!