SET CONCAT_NULL_YIELDS_NULL (Transact-SQL)

適用於:SQL Server Azure SQL 受控執行個體 Microsoft Fabric 中 Microsoft Fabric倉儲中的Azure Synapse AnalyticsAnalytics 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一律設定為 ON。 已被取代的功能不應在新應用程式中使用。 如需詳細資訊,請參閱 SQL Server 2017 中已被取代 資料庫引擎 功能。

Transact-SQL 語法慣例

Syntax

Azure Synapse Analytics、Microsoft Fabric 中的 SQL Server 無伺服器 SQL 集區語法

SET CONCAT_NULL_YIELDS_NULL { ON | OFF }   

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

SET CONCAT_NULL_YIELDS_NULL ON    

注意

若要檢視 SQL Server 2014 (12.x) 和舊版的 Transact-SQL 語法,請參閱 舊版檔

備註

當 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_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