Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

ANSI_NULLS i QUOTED_IDENTIFIER zabiły rzeczy. Do czego służą?

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Instalowanie Ubuntu 18.04 dla SQL Server 2019 na maszynie wirtualnej przy użyciu VMware Workstation

  2. Widoki wyszukiwania SQL Server 2005 dla określonych obiektów bazy danych

  3. Pobieranie wyników procedury składowanej SQL w formacie data.frame za pomocą RODBC

  4. Co to jest blokowanie serwera SQL?

  5. Jak podłączyć Sqlcmd do serwera?