SET CONCAT_NULL_YIELDS_NULL (Transact-SQL)

Gäller för:SQL ServerAzureSQL Managed InstanceAzureSynapse AnalyticsAnalyticsPlatform System (PDW)SQL analytics endpoint in Microsoft FabricWarehousein Microsoft Fabric

Styr om konkateneringsresultat behandlas som noll- eller tomma strängvärden.

Note

SET CONCAT_NULL_YIELDS_NULL OFF och CONCAT_NULL_YIELDS_NULL OFF-databasalternativet är föråldrade. Från och med SQL Server 2017 (14.x) CONCAT_NULL_YIELDS_NULL är det alltid inställt på ON. Inaktuella funktioner bör inte användas i nya program. Mer information finns i Inaktuella databasmotorfunktioner i SQL Server 2017.

Transact-SQL syntaxkonventioner

Syntax

Syntax för SQL Server, serverlös SQL-pool i Azure Synapse Analytics, Microsoft Fabric

SET CONCAT_NULL_YIELDS_NULL { ON | OFF }   

Syntax för Azure Synapse Analytics and Analytics Platform System (PDW)

SET CONCAT_NULL_YIELDS_NULL ON    

Remarks

När SET CONCAT_NULL_YIELDS_NULL är ON ger en sammanlänkning av ett nollvärde med en sträng ett NULL-resultat. Till exempel SELECT 'abc' + NULL ger NULL. När SET CONCAT_NULL_YIELDS_NULL är OFF ger sammanfogning av ett nollvärde med en sträng strängen strängen själv (nollvärdet behandlas som en tom sträng). Till exempel SELECT 'abc' + NULL ger abc.

Om SET CONCAT_NULL_YIELDS_NULL inte anges gäller inställningen för CONCAT_NULL_YIELDS_NULL databasalternativet.

Note

SET SET CONCAT_NULL_YIELDS_NULL är samma inställning som inställningen CONCAT_NULL_YIELDS_NULL för ALTER DATABASE.

Inställningen av SET CONCAT_NULL_YIELDS_NULL är satt vid exekverings- eller körtid och inte vid parsetid.

SET CONCAT_NULL_YIELDS_NULL måste vara vid skapande eller ändring av indexerade vyer, index på beräknade kolumner, filtrerade index eller rumsliga index. Om SET CONCAT_NULL_YIELDS_NULL är OFF kommer alla CREATE, UPDATE, INSERT, och DELETE satser på tabeller med index på beräknade kolumner, filtrerade index, rumsliga index eller indexerade vyer att misslyckas. För mer information om nödvändiga SET alternativinställningar med indexerade vyer och index på beräknade kolumner, se "Considerations When You Use the SET Statements" i SET Statements (Transact-SQL).

När CONCAT_NULL_YIELDS_NULL är satt till AV kan strängkonkatenering över servergränser inte ske.

För att se den aktuella inställningen för denna inställning, kör följande fråga.

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

Exempel

Följande exempel visar användning av båda SET CONCAT_NULL_YIELDS_NULL inställningarna.

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