Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

ANSI_NULLS и QUOTED_IDENTIFIER убиха нещата. За какво са те?

Добре, от гледна точка на програмист на приложение, ето какво правят тези настройки:

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, '') .. .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server Log Shipping &Disaster Recovery Installation and Configuration -3

  2. Как да намерите формата на датата, използван в текущата сесия в SQL Server (T-SQL)

  3. ИЛИ Късо съединение на оператора в SQL Server

  4. nvarchar(max) все още се съкращава

  5. Кодови първи миграции и съхранени процедури