OK, do ponto de vista de um desenvolvedor de aplicativos, veja o que essas configurações fazem:
QUOTED_IDENTIFIER
Esta configuração controla como as aspas
".."
são interpretados pelo compilador SQL. Quando QUOTED_IDENTIFIER
está ON então as aspas são tratadas como colchetes ([...]
) e pode ser usado para citar nomes de objetos SQL como nomes de tabelas, nomes de colunas, etc. Quando está DESLIGADO (não recomendado), as aspas são tratadas como apóstrofos ('..'
) e pode ser usado para citar strings de texto em comandos SQL. ANSI_NULLS
Esta configuração controla o que acontece quando você tenta usar qualquer operador de comparação diferente de
IS
em NULO. Quando está ON, essas comparações seguem o padrão que diz que comparar com NULL sempre falha (porque não é um valor, é um Flag) e retorna FALSE
. Quando esta configuração está DESATIVADA (realmente não recomendado) você pode tratá-lo com sucesso como um valor e usar =
, <>
, etc. nele e receba de volta TRUE conforme apropriado. A maneira correta de lidar com isso é usar o
IS
(ColumnValue IS NULL ..
). CONCAT_NULL_YIELDS_NULL
Esta configuração controla se NULLs "Propogar" quando usados em expressões de string. Quando esta configuração está ON, segue o padrão e uma expressão como
'some string' + NULL ..
sempre retorna NULL. Assim, em uma série de concatenações de strings, um NULL pode fazer com que toda a expressão retorne NULL. Desativar isso (também não recomendado) fará com que os NULLs sejam tratados como strings vazias, então 'some string' + NULL
apenas avalia para 'some string'
. A maneira correta de lidar com isso é com a função COALESCE (ou ISNULL):
'some string' + COALESCE(NULL, '') ..
.