OK, vanuit het oogpunt van een applicatieontwikkelaar doen deze instellingen het volgende:
QUOTED_IDENTIFIER
Deze instelling bepaalt hoe aanhalingstekens ".."
worden geïnterpreteerd door de SQL-compiler. Wanneer QUOTED_IDENTIFIER
is AAN, dan worden aanhalingstekens behandeld als haakjes ([...]
) en kan worden gebruikt om namen van SQL-objecten aan te halen, zoals tabelnamen, kolomnamen, enz. Als het UIT is (niet aanbevolen), worden aanhalingstekens behandeld als apostrofs ('..'
) en kan worden gebruikt om tekstreeksen in SQL-opdrachten te citeren.
ANSI_NULLS
Deze instelling bepaalt wat er gebeurt als je een andere vergelijkingsoperator probeert te gebruiken dan IS
op NUL. Als het AAN is, volgen deze vergelijkingen de standaard die zegt dat vergelijken met NULL altijd mislukt (omdat het geen waarde is, het is een vlag) en retourneert FALSE
. Als deze instelling UIT staat (echt niet aanbevolen) kunt u het met succes als een waarde behandelen en =
. gebruiken , <>
, enz. erop en krijg zo nodig TRUE terug.
De juiste manier om dit aan te pakken is om in plaats daarvan de IS
. te gebruiken (ColumnValue IS NULL ..
).
CONCAT_NULL_YIELDS_NULL
Deze instelling bepaalt of NULL's "Propogate" worden gebruikt in tekenreeksexpressies. Als deze instelling AAN is, volgt deze de standaard en een uitdrukking zoals 'some string' + NULL ..
geeft altijd NULL terug. In een reeks aaneenschakelingen van tekenreeksen kan één NULL er dus voor zorgen dat de hele expressie NULL retourneert. Als u dit UITschakelt (ook niet aanbevolen), worden de NULL's in plaats daarvan behandeld als lege tekenreeksen, dus 'some string' + NULL
evalueert gewoon naar 'some string'
.
De juiste manier om dit aan te pakken is met de COALESCE (of ISNULL) functie:'some string' + COALESCE(NULL, '') ..
.