OK, set fra en applikationsudviklers synspunkt, er det her, hvad disse indstillinger gør:
QUOTED_IDENTIFIER
Denne indstilling styrer, hvordan anførselstegn ".."
fortolkes af SQL-kompileren. Når QUOTED_IDENTIFIER
er ON, behandles anførselstegn som parenteser ([...]
) og kan bruges til at citere SQL-objektnavne som tabelnavne, kolonnenavne osv. Når den er FRA (anbefales ikke), behandles anførselstegn som apostrof ('..'
) og kan bruges til at citere tekststrenge i SQL-kommandoer.
ANSI_NULLS
Denne indstilling styrer, hvad der sker, når du forsøger at bruge en anden sammenligningsoperator end IS
på NULL. Når den er TIL, følger disse sammenligninger standarden, som siger, at sammenligning med NULL altid mislykkes (fordi det ikke er en værdi, det er et flag) og returnerer FALSE
. Når denne indstilling er FRA (virkelig ikke anbefales) kan du behandle det som en værdi og bruge =
, <> osv. på det og få SAND tilbage efter behov.
Den rigtige måde at håndtere dette på er i stedet at bruge IS
(ColumnValue IS NULL ..
).
CONCAT_NULL_YIELDS_NULL
Denne indstilling kontrollerer, om NULL'er "propogerer", når de bruges i strengudtryk. Når denne indstilling er TIL, følger den standarden og et udtryk som 'en eller anden streng' + NULL ..
returnerer altid NULL. I en serie af strengsammenkædninger kan én NULL således få hele udtrykket til at returnere NULL. Hvis du slår denne FRA (også, ikke anbefalet) vil NULL'erne blive behandlet som tomme strenge i stedet, så 'en eller anden streng' + NULL
evalueres bare til 'en eller anden streng'
.
Den korrekte måde at håndtere dette på er med funktionen COALESCE (eller ISNULL):'en eller anden streng' + COALESCE(NULL, '') ..
.