SET CONCAT_NULL_YIELDS_NULL (Transact-SQL)

适用于:Microsoft Fabric 的 Microsoft Fabric Warehouse 中的 SQL Server Azure SQL 托管实例 Azure Synapse Analytics Analytics Platform System (PDW)SQL 分析终结点

控制是将串联结果视为 Null 还是空字符串值。

注意

SET CONCAT_NULL_YIELDS_NULL OFF 以及 CONCAT_NULL_YIELDS_NULL OFF 数据库选项已被弃用。 从SQL Server 2017(14.x)开始,CONCAT_NULL_YIELDS_NULL始终设置为开启。 在新的应用程序中不应使用已弃用的功能。 有关详细信息,请参阅 SQL Server 2017 中弃用的数据库引擎功能。

Transact-SQL 语法约定

语法

SQL Server、Azure Synapse Analytics 中的无服务器 SQL 池和 Microsoft Fabric 的语法

SET CONCAT_NULL_YIELDS_NULL { ON | OFF }   

Azure Synapse Analytics 和 Analytics Platform System (PDW) 的语法

SET CONCAT_NULL_YIELDS_NULL ON    

注解

当 SET CONCAT_NULL_YIELDS_NULL 开启时,将空值与字符串串接得到 NULL 结果。 例如,SELECT 'abc' + NULL 将生成 NULL。 当 SET CONCAT_NULL_YIELDS_NULL 关闭时,将空值与字符串串接即可得到字符串本身(空值被视为空字符串)。 例如,SELECT 'abc' + NULL 将生成 abc

如果 SET CONCAT_NULL_YIELDS_NULL 未指定,则应用数据库选项的设置 CONCAT_NULL_YIELDS_NULL

注意

SET SET CONCAT_NULL_YIELDS_NULL与 的ALTER DATABASE设置CONCAT_NULL_YIELDS_NULL相同。

SET CONCAT_NULL_YIELDS_NULL设置是在执行或运行时设置的,而不是在分析时设置的。

SET CONCAT_NULL_YIELDS_NULL 创建或修改索引视图、计算列索引、过滤索引或空间索引时必须开 。 如果 SET CONCAT_NULL_YIELDS_NULL关闭,任何在计算列、过滤索引、空间索引或索引视图上索引的表上的 CREATE、 UPDATE、 INSERT和 DELETE 语句都将失败。 关于带索引视图和计算列索引的必要 SET 期权设置,请参见“使用 SET 语句时的考虑”,见 SET 语句(Transact-SQL))。

当 CONCAT_NULL_YIELDS_NULL 设置为关闭时,无法实现跨服务器边界的字符串串接。

要查看此设置的当前设置,请运行以下查询。

DECLARE @CONCAT_SETTING VARCHAR(3) = 'OFF';  
IF ( (4096 & @@OPTIONS) = 4096 ) SET @CONCAT_SETTING = 'ON';  
SELECT @CONCAT_SETTING AS CONCAT_NULL_YIELDS_NULL; 

示例

以下示例显示如何同时使用两个 SET CONCAT_NULL_YIELDS_NULL 设置。

PRINT 'Setting CONCAT_NULL_YIELDS_NULL ON';  
GO  
-- SET CONCAT_NULL_YIELDS_NULL ON and testing.  
SET CONCAT_NULL_YIELDS_NULL ON;  
GO  
SELECT 'abc' + NULL ;  
GO  
  
-- SET CONCAT_NULL_YIELDS_NULL OFF and testing.  
SET CONCAT_NULL_YIELDS_NULL OFF;  
GO  
SELECT 'abc' + NULL;   
GO