SET CONCAT_NULL_YIELDS_NULL (Transact-SQL)

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

重要说明重要提示

在 SQL Server 的未来版本中,CONCAT_NULL_YIELDS_NULL 将始终为 ON,而且将该选项显式设置为 OFF 的任何应用程序都将产生一个错误。请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。

适用范围:SQL Server(SQL Server 2008 到当前版本)。

主题链接图标 Transact-SQL 语法约定

语法

SET CONCAT_NULL_YIELDS_NULL { ON | OFF } 

注释

当 SET CONCAT_NULL_YIELDS_NULL 为 ON 时,串联空值与字符串将产生 NULL 结果。 例如,SELECT 'abc' + NULL 将生成 NULL。 当 SET CONCAT_NULL_YIELDS_NULL 为 OFF 时,串联空值与字符串将产生字符串本身(空值作为空字符串处理)。 例如,SELECT 'abc' + NULL 将生成 abc。

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

备注

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

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

当对计算列或索引视图创建或更改索引时,SET CONCAT_NULL_YIELDS_NULL 必须为 ON。 如果 SET CONCAT_NULL_YIELDS_NULL 为 OFF,则以计算列或索引视图创建索引的表中的任何 CREATE、UPDATE、INSERT 和 DELETE 语句都将失败。 有关计算列的索引视图和索引必需的 SET 选项设置的详细信息,请参阅 SET 语句 (Transact-SQL) 中的“使用 SET 语句时的注意事项”。

如果将 CONCAT_NULL_YIELDS_NULL 设置为 OFF,则不能出现跨服务器边界的字符串串联。

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

DECLARE @CONCAT_NULL_YIELDS_NULL VARCHAR(3) = 'OFF';
IF ( (4096 & @@OPTIONS) = 4096 ) SET @CONCAT_NULL_YIELDS_NULL = 'ON';
SELECT @CONCAT_NULL_YIELDS_NULL 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

请参阅

参考

SET 语句 (Transact-SQL)

SESSIONPROPERTY (Transact-SQL)