Добре, от гледна точка на програмист на приложение, ето какво правят тези настройки:
QUOTED_IDENTIFIER
Тази настройка контролира как кавичките ".."
се интерпретират от SQL компилатора. Когато QUOTED_IDENTIFIER
е ВКЛЮЧЕНО, тогава кавичките се третират като скоби ([...]
) и може да се използва за кавички на имена на SQL обекти като имена на таблици, имена на колони и т.н. Когато е ИЗКЛЮЧЕНО (не се препоръчва), тогава кавичките се третират като апострофи ('..'
) и може да се използва за цитиране на текстови низове в SQL команди.
ANSI_NULLS
Тази настройка контролира какво се случва, когато се опитате да използвате оператор за сравнение, различен от IS
на NULL. Когато е ON, тези сравнения следват стандарта, който казва, че сравняването с NULL винаги е неуспешно (защото не е стойност, а флаг) и връща FALSE
. Когато тази настройка е ИЗКЛЮЧЕНА (наистина не препоръчително) можете успешно да го третирате като стойност и да използвате =
, <>код> и т.н. върху него и върнете TRUE, както е подходящо.
Правилният начин да се справите с това е вместо това да използвате IS
(ColumnValue IS NULL ..
).
CONCAT_NULL_YIELDS_NULL
Тази настройка контролира дали NULLs се "разпространяват", когато се използват в низови изрази. Когато тази настройка е ВКЛЮЧЕНА, тя следва стандарта и израз като 'някакъв низ' + NULL ..
винаги връща NULL. По този начин, в поредица от конкатенации на низове, един NULL може да накара целия израз да върне NULL. Изключването на това (също не се препоръчва) ще накара NULL да се третират вместо това като празни низове, така че 'някакъв низ' + NULL
просто се оценява на 'някакъв низ'
.
Правилният начин да се справите с това е с функцията COALESCE (или ISNULL):'някакъв низ' + COALESCE(NULL, '') ..
.