当前位置:首页 > 系统运维 > 正文内容

SQL Server COALESCE()函数的2种好用 ***

a8116255316年前 (2010-07-19)系统运维10

以下的文章主要描述的是正确使用SQL Server COALESCE()函数的2种好用 *** ,SQL Server COALESCE()函数在实际应用中可以接受一系列的值,假如遇到列表中所有项都为空(null),那么只使用一个值。

然后,它将返回之一个非空值。这一技巧描述了创造性使用SQL Server 中COALESCE()函数的两种 *** 。

COALESCE()函数可以接受一系列的值,假如列表中所有项都为空(null),那么只使用一个值。然后,它将返回之一个非空值。这一技巧描述了创造性使用SQL Server 中COALESCE()函数的两种 *** 。

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

John A. MacDonald   Franklin D. Roosevelt   Madonna   Cher   Mary Weilage  

假如你想用一个字符串列出他们的全名,下面给出了如何使用SQL Server 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,'''')  

下面是SQL Server 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()函数一些特殊场合和特殊方式。就我的经验看来,SQL Server COALESCE()函数最常出现在一个具体的内容中,如一个查询或视图或存储过程中。

你可以将COALESCE()放在一个函数中来使用它,也可以通过将它放在一个单独的计算列中优化性能,并总能获得结果。

扫描二维码推送至手机访问。

版权声明:本文由2345好导航站长资讯发布,如需转载请注明出处。

本文链接:http://www.2345hao.cn/blog/index.php/post/22057.html

分享给朋友:

“SQL Server COALESCE()函数的2种好用 *** ” 的相关文章

windows 7鼠标停顿怎么办?windows 7 usb鼠标停顿的原因以及解决

windows 7鼠标停顿怎么办?windows 7 usb鼠标停顿的原因以及解决

很多使用Windows 7系统的朋友都想小编反应,假如暂停使用电脑,鼠标会出现停顿现象,这是怎么回事呢 该怎么解决呢 下面就和小编一起去看下Windows 7 usb鼠标停顿的解决方法吧。 由于Windows 7系统中有一项USB选择性暂停造成的。这项设置主要为了节电,当他检测到用户没有对系统进行...

windows 7/8.1正在启动windows时间长的解决方法

windows 7/8.1正在启动windows时间长的解决方法

正在启动windows时间长怎么办 小编带来了Windows 7/8.1正在启动windows时间长解决方法,假如有朋友在安装完Windows系统之后一直停留在“正在启动windows”的话,不妨试一试下文的方法哦~ 原因:Windows 7/8.1不完全支持UEFI,需要CSM(Comp...

windows 7系统开机提示press any key to restart的故障分析及解

windows 7系统开机提示press any key to restart的故障分析及解

Windows 7 64位系统开机后提示"press any key to restart",无法进入系统了,具体现象如下所示: 故障分析: 故障的主要原因还是硬盘的问题,可以先检查是不是接触不良或坏了,进行修复或更换即可。 解决方法: 1、开机按F8不动到高级选项出现在松手,选“...

Win 7系统中其他声音正常但酷狗音乐没声音怎么回事

Win 7系统中其他声音正常但酷狗音乐没声音怎么回事

故障现象: Windows 7酷狗软件无声音,系统声音正常。 原因分析: 1. 查看酷狗软件设置 2. 查看系统设置 解决方案: 1. Windows 7操作方法 如图:查看是否处于禁音状态   Windows 7系统声音正常酷狗音乐无声音 2. 查看设置音频输出是否...

windows 7系统件夹和文件都不显示名字如何解决

windows 7系统件夹和文件都不显示名字如何解决

假如碰到电脑里的文件夹和文件全都不显示名字了(如下图),是不是电脑中毒了呢 请教下笔者有没好的解决方法!下面是笔者给出的答案,希望能够帮助到大家! 首先打开你用来装图片的文件夹(缩略图下面的文字不显示的文件夹),然后但击工具栏上的“查看”选择“平铺”, 下面就是关键:要按住SHIFT键不...

windows 7系统下Windows服务被流氓软件注册怎么办?Windows服务

windows 7系统下Windows服务被流氓软件注册怎么办?Windows服务

解决方法: 其实处理这些使用流氓软件,需要将相关的.exe文件删除,使它不能再运行,或者直接清除这个服务本身,使计算机重启的时候,它不会再启动。比如Hijackthis扫描,在扫描日志中,一般会把非Windows系统的服务以023的方式列出来,如下面这段: O23 - ...