很多人知道ISNULL函数,但是很少人知道Coalesce函数,人们会无意中使用到Coalesce函数,并且发现它比ISNULL更加强大,其实到目前为止,这个函数的确非常有用,本文主要讲解其中的一些基本使用:
首先看看联机丛书的简要定义:返回其参数中第一个非空表达式
语法:COALESCE ( expression [ ,...n ] )
如果所有参数均为 NULL,则 COALESCE 返回 NULL。至少应有一个 Null 值为 NULL 类型。尽管 ISNULL 等同于 COALESCE,但它们的行为是不同的。包含具有非空参数的 ISNULL 的表达式将视为 NOT NULL,而包含具有非空参数的 COALESCE 的表达式将视为 NULL。在 SQL Server 中,若要对包含具有非空参数的 COALESCE 的表达式创建索引,可以使用 PERSISTED 列属性将计算列持久化,如以下语句所示:
CREATE TABLE #CheckSumTest
(
ID int identity ,
Num int DEFAULT ( RAND() * 100 ) ,
RowCheckSum AS COALESCE( CHECKSUM( id , num ) , 0 ) PERSISTED PRIMARY KEY
);
下面来看几个比较有用的例子:
首先,从MSDN上看看这个函数的使用方法,coalesce函数(下面简称函数),返回一个参数中非空的值。如:
SELECT COALESCE(NULL, NULL, GETDATE())
由于两个参数都为null,所以返回getdate()函数的值,也就是当前时间。即返回第一个非空的值。由于这个函数是返回第一个非空的值,所以参数里面必须最少有一个非空的值,如果使用下面的查询,将会报错:
SELECT COALESCE(NULL, NULL, NULL)
然后来看看把函数应用到Pivot中,下面语句在AdventureWorks 数据库上运行:
SELECT Name
FROM HumanResources.Department
WHERE ( GroupName= 'Executive Generaland Administration' )
会得到下面的结果:
如果想扭转结果,可以使用下面的语句:
DECLARE @DepartmentName VARCHAR(1000)
SELECT @DepartmentName = COALESCE(@DepartmentName, '') + Name + ';'
FROM HumanResources.Department
WHERE ( GroupName= 'Executive Generaland Administration' )
SELECT @DepartmentName AS DepartmentNames
使用函数来执行多条SQL命令:
当你知道这个函数可以进行扭转之后,你也应该知道它可以运行多条SQL命令。并且使用分号来区分独立的操作。下面语句是在Person架构下,有名字为Name的列的值:
DECLARE @SQL VARCHAR(MAX)
CREATE TABLE #TMP
(Clmn VARCHAR(500),
Val VARCHAR(50))
SELECT @SQL=COALESCE(@SQL,'')+CAST('INSERT INTO #TMP Select ''' + TABLE_SCHEMA + '.' + TABLE_NAME + '.'
+ COLUMN_NAME + ''' AS Clmn, Name FROM ' + TABLE_SCHEMA + '.[' + TABLE_NAME +
'];' AS VARCHAR(MAX))
FROM INFORMATION_SCHEMA.COLUMNS
JOIN sysobjects B ON INFORMATION_SCHEMA.COLUMNS.TABLE_NAME = B.NAME
WHERE COLUMN_NAME = 'Name'
AND xtype = 'U'
AND TABLE_SCHEMA = 'Person'
PRINT @SQL
EXEC(@SQL)
SELECT * FROM #TMP
DROP TABLE #TMP
还有一个很重要的功能:。当你尝试还原一个库,并发现不能独占访问时,这个功能非常有效。我们来打开多个窗口,来模拟一下多个连接。然后执行下面的脚本:
DECLARE @SQL VARCHAR(8000)
SELECT @SQL = COALESCE(@SQL, '') + 'Kill ' + CAST(spid AS VARCHAR(10)) + '; '
FROM sys.sysprocesses
WHERE DBID = DB_ID('AdventureWorks')
PRINT @SQL --EXEC(@SQL) Replace the print statement with exec to execute
结果如下:
然后你可以把结果复制出来,然后一次性杀掉所有session。
- 大小: 7.3 KB
- 大小: 23.6 KB
- 大小: 26.7 KB
- 大小: 229.5 KB
- 大小: 19.8 KB
分享到:
相关推荐
Oracle还提供了许多其他特殊功能的函数,如`COALESCE`返回第一个非空值,`DECODE`用于条件判断和替换,`NVL`处理NULL值等。 这些内置函数极大地简化了SQL查询和PL/SQL编程,提高了开发效率,使得数据处理更加灵活。...
COALESCE它会返回列表中第一个非NULL的值,或者,如果不存在非NULL的值,它就会返回一个NULL INTERVALINTERVAL运算符提供另外一种对数字及其范围的控制。它接受一个数字列表(N0, N1, N2...),将N0与剩下的所有数字...
- **COALESCE**:返回第一个非空的参数。 - 示例:`COALESCE(expr1, expr2, expr3)` 如果 `expr1` 非空则返回 `expr1`,否则检查 `expr2` 等。 通过上述介绍可以看出,Oracle提供了丰富的函数来支持数据的处理和...
- **功能**: 返回一个新的字符串,其中每个单词的第一个字母大写而单词中的其他字母小写。单词是由空格或其他非字母数字字符分隔的。 - **使用位置**: 过程性语句和SQL语句。 **1.1.4 LTRIM** - **语法**: `LTRIM...
它们可以接受输入参数,并且可以返回一个或多个输出参数。下面详细介绍实验中的几个存储过程。 1. **创建存储过程计算累加和并打印结果** ```sql CREATE PROCEDURE addresult AS DECLARE n int = 10, -- 最后...
ASCII(s)函数返回字符串s的第一个字符的ASCII码,这在处理字符编码时非常有用。CHAR_LENGTH(s)和CHARACTER_LENGTH(s)都是用来计算字符串s的字符数,确保了对字符串长度的准确计算。CONCAT(s1, s2...)用于合并多个...
下面我们将详细解析这段代码,并提供一个更清晰、准确的实现方法。 ### SQL查询实现 为了实现统计库存的功能,我们可以使用如下SQL语句: ```sql -- 统计库存数量 SELECT fm.类别, fm.品名, fm.单位, SUM...
其中,`torch_sparse`是一个非常重要的扩展库,专门用于处理稀疏张量,这对于图神经网络(GNNs)等应用至关重要。本文将详细阐述`torch_sparse-0.6.9-cp37-cp37m-win_amd64.whl`这一特定版本的安装步骤、使用方法...
torch_sparse是PyTorch生态系统中的一个第三方库,它为稀疏张量提供了丰富的操作函数,包括但不限于矩阵乘法、加法、索引、切片以及各种转换。这个库特别适用于处理大型图数据,因为稀疏张量可以在保持计算效率的...
在PyTorch生态系统中,torch_sparse是一个重要的扩展库,它为处理稀疏张量提供了便利。本文将深入探讨torch_sparse-0.6.18+pt21cpu版本的特性和使用方法,以及如何与PyTorch 2.1.0+cpu版本进行协同工作。 torch_...
本文将深入探讨一个使用Hive进行微博数据分析的实际案例——"weibo_summer.zip"项目,该压缩包文件包含了进行此类分析所需的脚本和数据。Hive作为Hadoop生态中的一个数据仓库工具,因其SQL-like查询语言和对大规模...
torch_sparse是专门为PyTorch设计的一个库,用于处理稀疏张量,它极大地优化了在图神经网络(GNNs)中的计算效率。 torch_sparse-0.6.12-cp37-cp37m-macosx_10_14_x86_64.whl是一个专为Python 3.7和macOS 10.14设计...
首先,`torch_sparse`是一个专门为PyTorch设计的库,它包含了一系列操作稀疏矩阵的功能,如矩阵乘法、切片、索引、求和等,这些在处理大规模图数据时非常有用。`torch_sparse-0.6.4`表示该版本是0.6.4版,`cp36`意味...
5. `add()`: 合并两个稀疏张量或一个稀疏张量与一个密集张量。 6. `index_select()`, `slice()`: 根据索引选择或切片稀疏张量。 7. `to()` 和 `from_torch()`: 在PyTorch的稠密张量和`torch_sparse`的稀疏张量之间...
今天我们要讨论的是一个专门针对PyTorch的扩展库——torch_sparse,这是一个用于处理稀疏张量的库,其版本为0.6.10,适用于Python 3.9,并且是专为macOS 10.14及x86_64架构设计的。在安装这个库之前,我们需要确保...
1. **稀疏张量操作**:库提供了创建、修改和操作稀疏张量的功能,如`coalesce()`用于合并非零元素,`sparse_mask()`用于根据一个稀疏张量的结构对另一个张量进行掩码操作。 2. **矩阵乘法**:实现了稀疏-稠密和稀疏...
今天,我们将深入探讨一个针对PyTorch的扩展库——torch_sparse-0.6.11,它为处理稀疏张量提供了便利。本文将围绕其功能、兼容性、安装和使用方法进行详细阐述。 首先,torch_sparse是PyTorch生态系统中的一个重要...
此外,`torch_sparse`还包含一些辅助函数,如`coalesce()`用于合并重复的非零元素,`transpose()`用于转置稀疏张量,以及`resize_()`用于调整稀疏张量的大小。这些功能使得在构建和训练GNN模型时,可以对稀疏数据...
3. torch.sparse.Tensor.coalesce():将稀疏张量转换为有效形式,确保每个索引只有一个非零值。 4. torch.sparse.Tensor.to_dense():将稀疏张量转换为稠密张量,方便与其他PyTorch操作配合使用。 三、安装torch_...
我们将基于一个实际的数据库——Northwind 示例数据库来进行讨论。 #### Northwind 数据库 Northwind 数据库是 Microsoft 提供的一个示例数据库,广泛用于 SQL Server 的教学和演示中。它包含了典型的业务场景,如...