OK, z pohledu vývojáře aplikace tato nastavení dělají toto:
QUOTED_IDENTIFIER
Toto nastavení řídí způsob uvozovek ".."
jsou interpretovány kompilátorem SQL. Když QUOTED_IDENTIFIER
je ON, pak se s uvozovkami zachází jako se závorkami ([...]
) a lze jej použít k uvozování názvů objektů SQL, jako jsou názvy tabulek, názvy sloupců atd. Když je vypnuto (nedoporučuje se), pak se s uvozovkami zachází jako s apostrofy ('..'
) a lze jej použít k citování textových řetězců v příkazech SQL.
ANSI_NULLS
Toto nastavení řídí, co se stane, když se pokusíte použít jiný operátor porovnání než IS
na NULL. Když je zapnuto, tato porovnávání se řídí standardem, který říká, že porovnávání s NULL vždy selže (protože to není hodnota, je to příznak) a vrací FALSE
. Když je toto nastavení VYPNUTO (opravdu ne doporučeno) můžete s ním úspěšně zacházet jako s hodnotou a použít =
, <>
, atd. na něm a získat zpět TRUE podle potřeby.
Správný způsob, jak to zvládnout, je místo toho použít IS
(ColumnValue IS NULL ..
).
CONCAT_NULL_YIELDS_NULL
Toto nastavení řídí, zda jsou hodnoty NULL "Propogate" použity v řetězcových výrazech. Když je toto nastavení ZAPNUTO, řídí se standardem a výrazem jako 'some string' + NULL ..
vždy vrátí NULL. V sérii zřetězení řetězců tedy může jedna hodnota NULL způsobit, že celý výraz vrátí hodnotu NULL. Vypnutí tohoto (také se nedoporučuje) způsobí, že hodnoty NULL budou místo toho považovány za prázdné řetězce, takže 'some string' + NULL
vyhodnotí se pouze jako 'some string'
.
Správný způsob, jak to vyřešit, je pomocí funkce COALESCE (nebo ISNULL):'some string' + COALESCE(NULL, '') ..
.