[標準]SQL的case when then 的使用範例

例如,下面的語句顯示中文年月  
   
  select   getdate()   as   日期,case   month(getdate())  
  when   11   then   '十一'  
  when   12   then   '十二'  
  else   substring('一二三四五六七八九十',   month(getdate()),1)  
  end+'月'   as   月份

=================================================

CASE 可能是 SQL 中被誤用最多的關鍵字之一。雖然你可能以前用過這個關鍵字來創建字段,但是它還具有更多用法。例如,你可以在 WHERE 子句中使用 CASE
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑首先讓我們看一下
CASE 的語法。在一般的 SELECT 中,其語法如下:
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑
SELECT <myColumnSpec> =
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑
CASE
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑
WHEN <A> THEN <somethingA>
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑
WHEN <B> THEN <somethingB>
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑
ELSE <somethingE>
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑
END
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑在上面的代碼中需要用具體的參數代替尖括號中的內容。下面是一個簡單的例子:
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑
USE pubs
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑
GO
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑
SELECT
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑     Title,
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑    
'Price Range' =
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑    
CASE
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑        
WHEN price IS NULL THEN 'Unpriced'
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑        
WHEN price < 10 THEN 'Bargain'
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑        
WHEN price BETWEEN 10 and 20 THEN 'Average'
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑        
ELSE 'Gift to impress relatives'
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑    
END
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑
FROM titles
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑
ORDER BY price
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑
GO
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑這是
CASE 的典型用法,但是使用 CASE 其實可以做更多的事情。比方說下面的 GROUP BY 子句中的 CASE
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑
SELECT 'Number of Titles', Count(*)
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑
FROM titles
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑
GROUP BY
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑    
CASE
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑        
WHEN price IS NULL THEN 'Unpriced'
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑        
WHEN price < 10 THEN 'Bargain'
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑        
WHEN price BETWEEN 10 and 20 THEN 'Average'
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑        
ELSE 'Gift to impress relatives'
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑    
END
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑
GO
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑你甚至還可以組合這些選項,添加一個
ORDER BY 子句,如下所示:
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑
USE pubs
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑
GO
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑
SELECT
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑    
CASE
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑        
WHEN price IS NULL THEN 'Unpriced'
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑        
WHEN price < 10 THEN 'Bargain'
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑        
WHEN price BETWEEN 10 and 20 THEN 'Average'
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑        
ELSE 'Gift to impress relatives'
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑    
END AS Range,
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑     Title
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑
FROM titles
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑
GROUP BY
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑    
CASE
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑        
WHEN price IS NULL THEN 'Unpriced'
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑        
WHEN price < 10 THEN 'Bargain'
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑        
WHEN price BETWEEN 10 and 20 THEN 'Average'
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑        
ELSE 'Gift to impress relatives'
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑    
END,
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑     Title
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑
ORDER BY
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑    
CASE
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑        
WHEN price IS NULL THEN 'Unpriced'
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑        
WHEN price < 10 THEN 'Bargain'
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑        
WHEN price BETWEEN 10 and 20 THEN 'Average'
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑        
ELSE 'Gift to impress relatives'
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑    
END,
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑     Title
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑
GO
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑
sql 中 case when 語法在這裏添加日誌標題 - 錢途無樑 - Notebook of 錢途無樑注意,爲了在
GROUP BY 塊中使用 CASE,查詢語句需要在 GROUP BY 塊中重複 SELECT 塊中的 CASE 塊。


發佈了17 篇原創文章 · 獲贊 1 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章