SET CONCAT_NULL_YIELDS_NULL (Transact-SQL)

Aplica-se a:SQL ServerInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsPDW (Analytics Platform System)Ponto de extremidade de análise do SQL no Microsoft FabricWarehouse no Microsoft Fabric

Controla se os resultados de concatenação serão tratados como valores de cadeia de caracteres nulos ou vazios.

Observação

SET CONCAT_NULL_YIELDS_NULL OFF e a opção de banco de dados CONCAT_NULL_YIELDS_NULL OFF foram preteridas. A partir do SQL Server 2017 (14.x), CONCAT_NULL_YIELDS_NULL é sempre definido como ON. Recursos preteridos não devem ser usados em aplicativos novos. Para obter mais informações, consulte Recursos preteridos do Mecanismo de Banco de Dados no SQL Server 2017.

Convenções de sintaxe de Transact-SQL

Sintaxe

Sintaxe para SQL Server, Pool de SQL sem servidor no Azure Synapse Analytics, Microsoft Fabric

SET CONCAT_NULL_YIELDS_NULL { ON | OFF }   

Sintaxe para Azure Synapse Analytics e PDW (Analytics Platform System)

SET CONCAT_NULL_YIELDS_NULL ON    

Observação

Para exibir a sintaxe do Transact-SQL para o SQL Server 2014 (12.x) e versões anteriores, confira a Documentação das versões anteriores.

Comentários

Quando SET CONCAT_NULL_YIELDS_NULL for ON, a concatenação de um valor nulo com uma cadeia de caracteres gera um resultado NULL. Por exemplo, SELECT 'abc' + NULL gera NULL. Quando SET CONCAT_NULL_YIELDS_NULL for OFF, a concatenação de um valor nulo com uma cadeia de caracteres gera a própria cadeia de caracteres (o valor nulo é tratado como uma cadeia de caracteres vazia). Por exemplo, SELECT 'abc' + NULL gera abc.

Se SET CONCAT_NULL_YIELDS_NULL não for especificado, a configuração da opção de banco de dados CONCAT_NULL_YIELDS_NULL será aplicada.

Observação

SET CONCAT_NULL_YIELDS_NULL é a mesma configuração CONCAT_NULL_YIELDS_NULL de ALTER DATABASE.

A configuração de SET CONCAT_NULL_YIELDS_NULL é definida na execução ou em tempo de execução, e não no momento da análise.

SET CONCAT_NULL_YIELDS_NULL deve estar como ON quando você criar ou alterar índices em colunas computadas, exibições indexadas ou índices espaciais. Se SET CONCAT_NULL_YIELDS_NULL estiver como OFF, haverá falha em todas as instruções CREATE, UPDATE, INSERT e DELETE nas tabelas com índices em colunas computadas, exibições indexadas ou índices espaciais. Para obter mais informações sobre as configurações da opção SET com exibições indexadas e índices em colunas computadas, confira "Considerações sobre o uso das instruções SET" em Instruções SET (Transact-SQL).

Quando CONCAT_NULL_YIELDS_NULL é definido como OFF, a concatenação de cadeia de caracteres entre limites de servidor não acontece.

Para exibir a configuração atual dessa configuração, execute a consulta a seguir.

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

Exemplos

O exemplo a seguir mostra o uso das duas configurações 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