Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

ANSI_NULLS dan QUOTED_IDENTIFIER membunuh banyak hal. Untuk apa mereka?

Oke, dari sudut pandang pengembang aplikasi, inilah yang dilakukan setelan ini:

QUOTED_IDENTIFIER

Pengaturan ini mengontrol bagaimana tanda kutip ".." ditafsirkan oleh kompiler SQL. Ketika QUOTED_IDENTIFIER AKTIF maka tanda kutip diperlakukan seperti tanda kurung ([...] ) dan dapat digunakan untuk mengutip nama objek SQL seperti nama tabel, nama kolom, dll. Ketika OFF (tidak disarankan), maka tanda kutip diperlakukan seperti apostrof ('..' ) dan dapat digunakan untuk mengutip string teks dalam perintah SQL.

ANSI_NULLS

Setelan ini mengontrol apa yang terjadi saat Anda mencoba menggunakan operator perbandingan selain IS pada NULL. Ketika AKTIF, perbandingan ini mengikuti standar yang mengatakan bahwa membandingkan dengan NULL selalu gagal (karena itu bukan nilai, itu Bendera) dan mengembalikan FALSE . Saat setelan ini MATI (benar-benar tidak disarankan) Anda berhasil memperlakukannya seperti nilai dan menggunakan = , <> , dll. di atasnya dan kembali TRUE sebagai yang sesuai.

Cara yang tepat untuk menangani ini adalah dengan menggunakan IS (ColumnValue IS NULL .. ).

CONCAT_NULL_YIELDS_NULL

Pengaturan ini mengontrol apakah NULL "Propogate" saat digunakan dalam ekspresi string. Saat pengaturan ini AKTIF, ia mengikuti standar dan ekspresi seperti 'some string' + NULL .. selalu mengembalikan NULL. Jadi, dalam serangkaian rangkaian string, satu NULL dapat menyebabkan seluruh ekspresi mengembalikan NULL. Menonaktifkan ini (juga, tidak disarankan) akan menyebabkan NULL diperlakukan seperti string kosong, jadi 'some string' + NULL hanya mengevaluasi ke 'some string' .

Cara yang tepat untuk menangani ini adalah dengan fungsi COALESCE (atau ISNULL):'some string' + 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 2005, UPDATE atau INSERT massal

  2. Apakah Catatan yang Disisipkan Selalu Menerima Nilai Identitas Berdekatan

  3. SQL Server Management Studio - Menambahkan/Memindahkan Kolom perlu dijatuhkan dan dibuat ulang?

  4. Memahami Penguncian SQL Server ke Lingkungan Basis Data yang Aman

  5. DECODE() fungsi di SQL Server