1. 程式人生 > >關於sqlserver中 case when的用法

關於sqlserver中 case when的用法

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 NULLTHEN'Unpriced'
sql 中 case when 語法在這裡新增日誌標題 - 錢途無樑 - Notebook of 錢途無樑        
WHEN price <
10THEN 'Bargain'
sql 中 case when 語法在這裡新增日誌標題 - 錢途無樑 - Notebook of 錢途無樑        
WHEN price BETWEEN10and 20THEN '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 錢途無樑
ORDERBY 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 錢途無樑
GROUPBY
sql 中 case when 語法在這裡新增日誌標題 - 錢途無樑 - Notebook of 錢途無樑    
CASE
sql 中 case when 語法在這裡新增日誌標題 - 錢途無樑 - Notebook of 錢途無樑        
WHEN price IS NULLTHEN
'Unpriced'
sql 中 case when 語法在這裡新增日誌標題 - 錢途無樑 - Notebook of 錢途無樑        
WHEN price < 10THEN 'Bargain'
sql 中 case when 語法在這裡新增日誌標題 - 錢途無樑 - Notebook of 錢途無樑        
WHEN price BETWEEN10and 20THEN '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 NULLTHEN'Unpriced'
sql 中 case when 語法在這裡新增日誌標題 - 錢途無樑 - Notebook of 錢途無樑        
WHEN price < 10THEN 'Bargain'
sql 中 case when 語法在這裡新增日誌標題 - 錢途無樑 - Notebook of 錢途無樑        
WHEN price BETWEEN10and 20THEN 'Average'
sql 中 case when 語法在這裡新增日誌標題 - 錢途無樑 - Notebook of 錢途無樑        
ELSE'Gift to impress relatives'
sql 中 case when 語法在這裡新增日誌標題 - 錢途無樑 - Notebook of 錢途無樑    
ENDAS Range,
sql 中 case when 語法在這裡新增日誌標題 - 錢途無樑 - Notebook of 錢途無樑     Title
sql 中 case when 語法在這裡新增日誌標題 - 錢途無樑 - Notebook of 錢途無樑
FROM titles
sql 中 case when 語法在這裡新增日誌標題 - 錢途無樑 - Notebook of 錢途無樑
GROUPBY
sql 中 case when 語法在這裡新增日誌標題 - 錢途無樑 - Notebook of 錢途無樑    
CASE
sql 中 case when 語法在這裡新增日誌標題 - 錢途無樑 - Notebook of 錢途無樑        
WHEN price IS NULLTHEN'Unpriced'
sql 中 case when 語法在這裡新增日誌標題 - 錢途無樑 - Notebook of 錢途無樑        
WHEN price < 10THEN 'Bargain'
sql 中 case when 語法在這裡新增日誌標題 - 錢途無樑 - Notebook of 錢途無樑        
WHEN price BETWEEN10and 20THEN '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 錢途無樑
ORDERBY
sql 中 case when 語法在這裡新增日誌標題 - 錢途無樑 - Notebook of 錢途無樑    
CASE
sql 中 case when 語法在這裡新增日誌標題 - 錢途無樑 - Notebook of 錢途無樑        
WHEN price IS NULLTHEN'Unpriced'
sql 中 case when 語法在這裡新增日誌標題 - 錢途無樑 - Notebook of 錢途無樑        
WHEN price < 10THEN 'Bargain'
sql 中 case when 語法在這裡新增日誌標題 - 錢途無樑 - Notebook of 錢途無樑        
WHEN price BETWEEN10and 20THEN '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 塊。
sql 中 case when 語法在這裡新增日誌標題 - 錢途無樑 - Notebook of 錢途無樑
sql 中 case when 語法在這裡新增日誌標題 - 錢途無樑 - Notebook of 錢途無樑除了選擇自定義欄位之外,在很多情況下
CASE 都非常有用。再深入一步,你還可以得到你以前認為不可能得到的分組排序結果集。