OK, z punktu widzenia programisty aplikacji, oto co robią te ustawienia:
QUOTED_IDENTIFIER
To ustawienie kontroluje sposób, w jaki znaki cudzysłowu ".."
są interpretowane przez kompilator SQL. Kiedy QUOTED_IDENTIFIER
jest ON, wtedy cudzysłowy są traktowane jak nawiasy ([...]
) i może być używany do cytowania nazw obiektów SQL, takich jak nazwy tabel, nazwy kolumn itp. Gdy jest wyłączone (niezalecane), cudzysłowy są traktowane jak apostrofy ('..'
) i może być używany do cytowania ciągów tekstowych w poleceniach SQL.
ANSI_NULLS
To ustawienie kontroluje, co się stanie, gdy spróbujesz użyć dowolnego operatora porównania innego niż IS
na NULL. Gdy jest włączone, porównania te są zgodne ze standardem, który mówi, że porównywanie z NULL zawsze kończy się niepowodzeniem (ponieważ nie jest wartością, jest to flaga) i zwraca FALSE
. Gdy to ustawienie jest WYŁĄCZONE (naprawdę nie zalecane) możesz z powodzeniem traktować to jako wartość i użyć =
, <> , itp. i w razie potrzeby odzyskaj PRAWDA.
Właściwym sposobem radzenia sobie z tym jest użycie IS
(Wartość kolumny JEST NULL ..
).
CONCAT_NULL_YIELDS_NULL
To ustawienie kontroluje, czy wartości NULL "Propogate" są używane w wyrażeniach ciągu. Gdy to ustawienie jest WŁĄCZONE, jest ono zgodne ze standardem i wyrażeniem takim jak 'jakiś ciąg' + NULL ..
zawsze zwraca NULL. Tak więc w serii konkatenacji łańcuchów jedna wartość NULL może spowodować, że całe wyrażenie zwróci NULL. Wyłączenie tej opcji (również niezalecane) spowoduje, że wartości NULL będą traktowane jako puste ciągi, więc 'jakiś ciąg' + NULL
po prostu wylicza 'jakiś ciąg'
.
Właściwym sposobem obsługi tego jest funkcja COALESCE (lub ISNULL):'jakiś ciąg' + COALESCE(NULL, '') ..
.