OK, dal punto di vista di uno sviluppatore di applicazioni, ecco cosa fanno queste impostazioni:
QUOTED_IDENTIFIER
Questa impostazione controlla come le virgolette ".."
vengono interpretati dal compilatore SQL. Quando QUOTED_IDENTIFIER
è ON, le virgolette vengono trattate come parentesi quadre ([...]
) e può essere utilizzato per citare nomi di oggetti SQL come nomi di tabelle, nomi di colonne, ecc. Quando è OFF (non consigliato), le virgolette vengono trattate come apostrofi ('..'
) e può essere utilizzato per citare stringhe di testo nei comandi SQL.
ANSI_NULLS
Questa impostazione controlla cosa succede quando tenti di utilizzare qualsiasi operatore di confronto diverso da IS
su NULLO. Quando è ON, questi confronti seguono lo standard che dice che il confronto con NULL fallisce sempre (perché non è un valore, è un flag) e restituisce FALSE
. Quando questa impostazione è OFF (davvero non consigliato) puoi trattarlo con successo come un valore e utilizzare =
, <>
, ecc. su di esso e torna TRUE come appropriato.
Il modo corretto per gestirlo è invece utilizzare IS
(ColumnValue IS NULL ..
).
CONCAT_NULL_YIELDS_NULL
Questa impostazione controlla se i NULL vengono "propagati" quando vengono utilizzati nelle espressioni di stringa. Quando questa impostazione è ON, segue lo standard e un'espressione come 'some string' + NULL ..
restituisce sempre NULL. Pertanto, in una serie di concatenazioni di stringhe, un NULL può far sì che l'intera espressione restituisca NULL. Disattivandolo (anche non consigliato) i NULL verranno trattati come stringhe vuote, quindi 'some string' + NULL
restituisce solo 'some string'
.
Il modo corretto per gestirlo è con la funzione COALESCE (o ISNULL):'some string' + COALESCE(NULL, '') ..
.