OK, ur en applikationsutvecklares synvinkel, så här gör dessa inställningar:
QUOTED_IDENTIFIER
Den här inställningen styr hur citattecken ".."
tolkas av SQL-kompilatorn. När QUOTED_IDENTIFIER
är PÅ behandlas citattecken som hakparenteser ([...]
) och kan användas för att citera SQL-objektnamn som tabellnamn, kolumnnamn etc. När den är AV (rekommenderas inte), behandlas citattecken som apostrof ('..'
) och kan användas för att citera textsträngar i SQL-kommandon.
ANSI_NULLS
Den här inställningen styr vad som händer när du försöker använda någon annan jämförelseoperator än IS
på NULL. När den är PÅ följer dessa jämförelser standarden som säger att jämförelse med NULL alltid misslyckas (eftersom det inte är ett värde, det är en flagga) och returnerar FALSE
. När den här inställningen är AV (verkligen inte rekommenderas) kan du framgångsrikt behandla det som ett värde och använda =
, <> , etc. på den och få tillbaka TRUE som lämpligt.
Det korrekta sättet att hantera detta är att istället använda IS
(ColumnValue IS NULL ..
).
CONCAT_NULL_YIELDS_NULL
Den här inställningen styr om NULLs "Propogate" används i stränguttryck. När den här inställningen är PÅ följer den standarden och ett uttryck som 'någon sträng' + NULL ..
returnerar alltid NULL. Således, i en serie av strängsammansättningar, kan en NULL få hela uttrycket att returnera NULL. Om du stänger AV (även, rekommenderas inte) kommer NULL:erna att behandlas som tomma strängar istället, så 'någon sträng' + NULL
utvärderas bara till 'någon sträng'
.
Det korrekta sättet att hantera detta är med funktionen COALESCE (eller ISNULL):'någon sträng' + COALESCE(NULL, '') ..
.