浓毛老太交欧美老妇热爱乱,蜜臀性色av免费,妺妺窝人体色www看美女,久久久久久久久久久大尺度免费视频,麻豆人妻无码性色av专区

位置:51電子網(wǎng) » 技術(shù)資料 » 通信網(wǎng)絡(luò)

SQL Server COALESCE()函數(shù)的創(chuàng)新應(yīng)用

發(fā)布時(shí)間:2008/8/21 0:00:00 訪問次數(shù):563

  coalesce()函數(shù)可以接受一系列的值,如果列表中所有項(xiàng)都為空(null),那么只使用一個(gè)值。然后,它將返回第一個(gè)非空值。這一技巧描述了創(chuàng)造性使用sql server 中coalesce()函數(shù)的兩種方法。

  這里有一個(gè)簡(jiǎn)單的例子:有一個(gè)persons數(shù)據(jù)表,它有三個(gè)字段firstname、middlename和lastname。表中包含以下值:

  john a. macdonald

  franklin d. roosevelt

  madonna

  cher

  mary weilage

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

  select firstname + '' '' +coalesce(middlename,'''')+ '' '' +coalesce(lastname,'''')

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

  select dbo.wholename(''james'',null,''bond'')

  union

  select dbo.wholename(''cher'',null,null)

  union

  select dbo.wholename(''john'',''f.'',''kennedy'')

  測(cè)試結(jié)果如下:

  james bond

  cher

  john f. kennedy

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

  select @result = ltrim(@first + '' '' + coalesce(@middle,'''') + '' '') + coalesce(@last,'''')

  下面是coalesce()函數(shù)的另一個(gè)應(yīng)用。在本例中,我們將顯示一個(gè)支付給員工的工資單。問題是對(duì)于不同的員工工資標(biāo)準(zhǔn)是不同的(例如,有些員工是按小時(shí)支付,按工作量每周發(fā)一次工資或是按責(zé)任支付)。列表b中是創(chuàng)建一個(gè)樣表的代碼。下面是一些示例記錄,每個(gè)是一種類型:

  1 18.00 40 null null null null

  2 null null 4.00 400 null null

  3 null null null null 800.00 null

  4 null null null null 500.00 600

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

  select

  employeeid,

  coalesce(hourlywage * hoursperweek,0)+

  coalesce(amountperpiece * piecesthisweek,0)+

  coalesce(weeklysalary + commissionthisweek,0)as payment

  from [coalesce_demo].[payday]

  結(jié)果如下:

  employeeid payment

  1 720.00

  2 1600.00

  3 800.00

  4 1100.00

  你可能需要在應(yīng)用程序中多處使用這一計(jì)算方法,雖然這種表示可以完成任務(wù),但是看起來不是很美觀。下面列出了如何使用一個(gè)單獨(dú)的求和列來完成這項(xiàng)工作:

  altertable coalesce_demo.payday

  add payment as

  coalesce(hourlywage * hoursperweek,0)+

  coalesce(amountperpiece * piecesthisweek,0)+

  coalesce(weeklysalary + commissionthisweek,0)

  這樣只要使用select *就可以顯示預(yù)先計(jì)算好的結(jié)果。

  小結(jié)

  本文介紹了使用coalesce()函數(shù)一些特殊場(chǎng)合和特殊方式。就我的經(jīng)驗(yàn)看來,coalesce()函數(shù)最常出現(xiàn)在一個(gè)具體的內(nèi)容中,如一個(gè)查詢或視圖或存儲(chǔ)過程中。

  你可以將coalesce()放在一個(gè)函數(shù)中來使用它,也可以通過將它放在一個(gè)單獨(dú)的計(jì)算列中優(yōu)化性能,并總能獲得結(jié)果。

  欲知詳情,請(qǐng)登錄維庫電子

  coalesce()函數(shù)可以接受一系列的值,如果列表中所有項(xiàng)都為空(null),那么只使用一個(gè)值。然后,它將返回第一個(gè)非空值。這一技巧描述了創(chuàng)造性使用sql server 中coalesce()函數(shù)的兩種方法。

  這里有一個(gè)簡(jiǎn)單的例子:有一個(gè)persons數(shù)據(jù)表,它有三個(gè)字段firstname、middlename和lastname。表中包含以下值:

  john a. macdonald

  franklin d. roosevelt

  madonna

  cher

  mary weilage

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

  select firstname + '' '' +coalesce(middlename,'''')+ '' '' +coalesce(lastname,'''')

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

  select dbo.wholename(''james'',null,''bond'')

  union

  select dbo.wholename(''cher'',null,null)

  union

  select dbo.wholename(''john'',''f.'',''kennedy'')

  測(cè)試結(jié)果如下:

  james bond

  cher

  john f. kennedy

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

  select @result = ltrim(@first + '' '' + coalesce(@middle,'''') + '' '') + coalesce(@last,'''')

  下面是coalesce()函數(shù)的另一個(gè)應(yīng)用。在本例中,我們將顯示一個(gè)支付給員工的工資單。問題是對(duì)于不同的員工工資標(biāo)準(zhǔn)是不同的(例如,有些員工是按小時(shí)支付,按工作量每周發(fā)一次工資或是按責(zé)任支付)。列表b中是創(chuàng)建一個(gè)樣表的代碼。下面是一些示例記錄,每個(gè)是一種類型:

  1 18.00 40 null null null null

  2 null null 4.00 400 null null

  3 null null null null 800.00 null

  4 null null null null 500.00 600

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

  select

  employeeid,

  coalesce(hourlywage * hoursperweek,0)+

  coalesce(amountperpiece * piecesthisweek,0)+

  coalesce(weeklysalary + commissionthisweek,0)as payment

  from [coalesce_demo].[payday]

  結(jié)果如下:

  employeeid payment

  1 720.00

  2 1600.00

  3 800.00

  4 1100.00

  你可能需要在應(yīng)用程序中多處使用這一計(jì)算方法,雖然這種表示可以完成任務(wù),但是看起來不是很美觀。下面列出了如何使用一個(gè)單獨(dú)的求和列來完成這項(xiàng)工作:

  altertable coalesce_demo.payday

  add payment as

  coalesce(hourlywage * hoursperweek,0)+

  coalesce(amountperpiece * piecesthisweek,0)+

  coalesce(weeklysalary + commissionthisweek,0)

  這樣只要使用select *就可以顯示預(yù)先計(jì)算好的結(jié)果。

  小結(jié)

  本文介紹了使用coalesce()函數(shù)一些特殊場(chǎng)合和特殊方式。就我的經(jīng)驗(yàn)看來,coalesce()函數(shù)最常出現(xiàn)在一個(gè)具體的內(nèi)容中,如一個(gè)查詢或視圖或存儲(chǔ)過程中。

  你可以將coalesce()放在一個(gè)函數(shù)中來使用它,也可以通過將它放在一個(gè)單獨(dú)的計(jì)算列中優(yōu)化性能,并總能獲得結(jié)果。

  欲知詳情,請(qǐng)登錄維庫電子

-->
相關(guān)IC型號(hào)

熱門點(diǎn)擊

 

推薦技術(shù)資料

耳機(jī)的焊接
    整機(jī)電路簡(jiǎn)單,用洞洞板搭線比較方便。EM8621實(shí)際采... [詳細(xì)]
版權(quán)所有:51dzw.COM
深圳服務(wù)熱線:13751165337  13692101218
粵ICP備09112631號(hào)-6(miitbeian.gov.cn)
公網(wǎng)安備44030402000607
深圳市碧威特網(wǎng)絡(luò)技術(shù)有限公司
付款方式


 復(fù)制成功!