SET CONCAT_NULL_YIELDS_NULL (Transact-SQL)
Controla se os resultados de concatenação serão ou não tratados como valores de cadeia de caracteres nulos ou vazios.
Importante
Em uma versão futura do SQL Server, CONCAT_NULL_YIELDS_NULL sempre estará ON e quaisquer aplicativos que definam explicitamente a opção como OFF gerarão um erro.Evite usar esse recurso em novos trabalhos de desenvolvimento e planeje modificar os aplicativos que o utilizam atualmente.
Aplica-se a: SQL Server (SQL Server 2008 até a versão atual). |
Convenções da sintaxe Transact-SQL
Sintaxe
SET CONCAT_NULL_YIELDS_NULL { ON | OFF }
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.
Dica
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 ser ON quando você estiver criando ou alterando índices em colunas computadas ou exibições indexadas. Se SET CONCAT_NULL_YIELDS_NULL for OFF, toda instrução CREATE, UPDATE, INSERT e DELETE nas tabelas com índices em colunas computadas ou exibições indexadas falhará. Para obter mais informações sobre as configurações da opção SET com exibições indexadas e índices em colunas computadas, consulte "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_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;
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