共用方式為


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 值和字串會產生 NULL 結果。 例如,SELECT 'abc' + NULL 會產生 NULL。 當 SET CONCAT_NULL_YIELDS_NULL 是 OFF 時,串連 Null 值和字串會產生字串本身 (將 Null 值當作空字串來處理)。 例如,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)