SQL Server COALESCE()函數的創(chuàng)新應用-設計應用_第1頁
SQL Server COALESCE()函數的創(chuàng)新應用-設計應用_第2頁
SQL Server COALESCE()函數的創(chuàng)新應用-設計應用_第3頁
SQL Server COALESCE()函數的創(chuàng)新應用-設計應用_第4頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

精品文檔-下載后可編輯SQLServerCOALESCE()函數的創(chuàng)新應用-設計應用COALESCE()函數可以接受一系列的值,如果列表中所有項都為空(null),那么只使用一個值。然后,它將返回個非空值。這一技巧描述了創(chuàng)造性使用SQLServer中COALESCE()函數的兩種方法。

這里有一個簡單的例子:有一個PersONs數據表,它有三個字段FirstName、MiddleName和LastName。表中包含以下值:

JohnA.MacDonald

FranklinD.Roosevelt

Madonna

Cher

MaryWeilage

如果你想用一個字符串列出他們的全名,下面給出了如何使用COALESCE()函數完成此功能:

SELECTFirstName+''''+COALESCE(MiddleName,'''')+''''+COALESCE(LastName,'''')

如果你不想每個查詢都這樣寫,列表A顯示了如何將它轉換成一個函數。這樣當你需要使用這個腳本的時候(不管每個列的實際值是什么),可以直接調用該函數并傳遞三個字段參數。在下面的例子中,我傳遞給函數的參數是人名,但是你可以用字段名替代得到同樣的結果:

SELECTdbo.WholeName(''James'',NULL,''Bond'')

UNION

SELECTdbo.WholeName(''Cher'',NULL,NULL)

UNION

SELECTdbo.WholeName(''John'',''F.'',''Kennedy'')

測試結果如下:

JamesBond

Cher

JohnF.Kennedy

你可能會注意到我們的一個問題,在JamesBond這個名字中有兩個空格。通過修改@result這一行可以改正這個問題,如下所示:

SELECT@Result=LTRIM(@first+''''+COALESCE(@middle,'''')+'''')+COALESCE(@last,'''')

下面是COALESCE()函數的另一個應用。在本例中,我們將顯示一個支付給員工的工資單。問題是對于不同的員工工資標準是不同的(例如,有些員工是按小時支付,按工作量每周發(fā)工資或是按責任支付)。列表B中是創(chuàng)建一個樣表的代碼。下面是一些示例記錄,每個是一種類型:

118.0040NULLNULLNULLNULL

2NULLNULL4.00400NULLNULL

3NULLNULLNULLNULL800.00NULL

4NULLNULLNULLNULL500.00600

用下面的代碼在同一列中列出支付給員工的總額(不管它們的支付標準):

SELECT

EmployeeID,

COALESCE(HourlyWage*HoursPerWeek,0)+

COALESCE(AmountPerPiece*PiecesThisWeek,0)+

COALESCE(WeeklySalary+CommissionThisWeek,0)ASPayment

FROM[Coalesce_Demo].[PayDay]

結果如下:

EmployeeIDPayment

1720.00

21600.00

3800.00

41100.00

你可能需要在應用程序中多處使用這一計算方法,雖然這種表示可以完成任務,但是看起來不是很美觀。下面列出了如何使用一個單獨的求和列來完成這項工作:

ALTERTABLECoalesce_Demo.PayDay

ADDPaymentAS

COALESCE(HourlyWage*HoursPerWeek,0)+

COALESCE(AmountPerPiece*PiecesThisWeek,0)+

COALESCE(WeeklySalary+CommissionThisWeek,0)

這樣只要使用SELECT*就可以顯示預先計算好的結果。

小結

本文介紹了使用COALESCE()函數一些特殊場合和特殊方式。就我的經驗看來,COALESCE()函數常出現

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論