当前位置:七道奇文章资讯数据防范MSSQL防范
日期:2011-05-02 15:21:00  来源:本站整理

SQL Server COALESCE()函数的利用[MSSQL防范]

赞助商链接



  本文“SQL Server COALESCE()函数的利用[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

COALESCE()函数可以承受一系列的值,假如列表中全部项都为空(null),那么只利用一个值.然后,它将返回第一个非空值.这一本领描写了创造性利用sql server 中COALESCE()函数的两种办法.

这里有一个简单的例子:有一个Persons数据表,它有三个字段FirstName、MiddleName和LastName.表中包含以下值:

John A. MacDonald

Franklin D. Roosevelt

Madonna

Cher

Mary Weilage

假如你想用一个字符串列出他们的全名,下面给出了若何利用COALESCE()函数完成此功效:

SELECT FirstName + '' '' +COALESCE(MiddleName,'''')+ '' '' +COALESCE(LastName,'''')

假如你不想每个查询都这样写,列表A显示了若何将它转换成一个函数.这样当你需求利用这个脚本的时刻(不管每个列的实际值是什么),可以直接调用该函数并传送三个字段参数.在下面的例子中,我传送给函数的参数是人名,但是你可以用字段名替换得到一样的后果:

SELECT dbo.WholeName(''James'',NULL,''Bond'')

UNION

SELECT dbo.WholeName(''Cher'',NULL,NULL)

UNION

SELECT dbo.WholeName(''John'',''F.'',''Kennedy'')

测试后果以下:

James Bond

Cher

John F. Kennedy

你大概会注意到我们的一个问题,在James Bond这个名字中有两个空格.通过改正@result这一行可以改正这个问题,以下所示:

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

下面是COALESCE()函数的另一个利用.在本例中,我们将显示一个支付给员工的工资单.问题是关于差别的员工工资尺度是差别的(比方,有些员工是按小时支付,按工作量每周发一次工资或是按责任支付).列表B中是成立一个样表的代码.下面是一些示例记录,每个是一种范例:

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

用下面的代码在同一列中列出支付给员工的总额(不管它们的支付尺度):

SELECT

EmployeeID,

COALESCE(HourlyWage * HoursPerWeek,0)+

COALESCE(AmountPerPiece * PiecesThisWeek,0)+

COALESCE(WeeklySalary + CommissionThisWeek,0)AS Payment

FROM [Coalesce_Demo].[PayDay]

后果以下:

EmployeeID Payment

1 720.00

2 1600.00

3 800.00

4 1100.00

你大概需求在利用程序中多处利用这一计算办法,固然这种表示可以完成任务,但是看起来不是很美好.下面列出了若何利用一个单独的求和列来完成这项工作:

ALTERTABLE Coalesce_Demo.PayDay

ADD Payment AS

COALESCE(HourlyWage * HoursPerWeek,0)+

COALESCE(AmountPerPiece * PiecesThisWeek,0)+

COALESCE(WeeklySalary + CommissionThisWeek,0)

这样只要利用SELECT *便可以显示预先计算好的后果.

小结

本文介绍了利用COALESCE()函数一些特别场所和特别方法.就我的经验看来,COALESCE()函数最常呈目前一个具体的内容中,如一个查询或视图或存储历程中.

你可以将COALESCE()放在一个函数中来利用它,也可以通过将它放在一个单独的计算列中优化性能,并总能得到后果.   以上是“SQL Server COALESCE()函数的利用[MSSQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • Windows 搭配 IIS7 PHP MySQL 环境
  • sqlserver索引的原理及索引成立的注意事项小结
  • SQL Join的一些总结(实例)
  • SQL的Join利用图解教程
  • SQL中JOIN和UNION辨别、用法及示例介绍
  • 关于SQL中CTE(公用表表达式)(Common Table Expression)的总结
  • mysql Out of memory (Needed 16777224 bytes)的错误办理
  • mysql提醒[Warning] Invalid (old?) table or database name问题的办理办法
  • mysql启用skip-name-resolve情势时呈现Warning的处理办法
  • mysql启用skip-name-resolve情势时呈现Warning的处理办法
  • MySQL Order By语法介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .