Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

ANSI_NULLS và QUOTED_IDENTIFIER đã giết chết mọi thứ. Chúng để làm gì?

Được rồi, theo quan điểm của nhà phát triển ứng dụng, đây là những gì các cài đặt này thực hiện:

QUOTED_IDENTIFIER

Cài đặt này kiểm soát cách dấu ngoặc kép ".." được thông dịch bởi trình biên dịch SQL. Khi QUOTED_IDENTIFIER BẬT thì dấu ngoặc kép được coi như dấu ngoặc ([...] ) và có thể được sử dụng để trích dẫn tên đối tượng SQL như tên bảng, tên cột, v.v. Khi nó TẮT (không được khuyến nghị), thì dấu ngoặc kép được coi như dấu nháy đơn ('..' ) và có thể được sử dụng để trích dẫn các chuỗi văn bản trong các lệnh SQL.

ANSI_NULLS

Cài đặt này kiểm soát những gì sẽ xảy ra khi bạn cố gắng sử dụng bất kỳ toán tử so sánh nào ngoài IS trên NULL. Khi nó được BẬT, các phép so sánh này tuân theo tiêu chuẩn nói rằng so sánh với NULL luôn không thành công (vì nó không phải là một giá trị, đó là một Cờ) và trả về FALSE . Khi cài đặt này TẮT (thực sự không được khuyến nghị) bạn có thể coi nó như một giá trị và sử dụng = một cách thành công , <> , v.v. trên đó và nhận lại ĐÚNG khi hết hạn.

Cách thích hợp để xử lý điều này là thay vào đó sử dụng IS (ColumnValue IS NULL .. ).

CONCAT_NULL_YIELDS_NULL

Cài đặt này kiểm soát xem NULLs "Propogate" whn được sử dụng trong biểu thức chuỗi hay không. Khi BẬT cài đặt này, nó tuân theo tiêu chuẩn và biểu thức như 'some string' + NULL .. luôn trả về NULL. Do đó, trong một loạt các nối chuỗi, một NULL có thể khiến toàn bộ biểu thức trả về NULL. Việc TẮT chức năng này (cũng không được khuyến nghị) sẽ khiến các NULL được coi như các chuỗi trống, vì vậy hãy 'some string' + NULL chỉ đánh giá thành 'some string' .

Cách thích hợp để xử lý điều này là với hàm COALESCE (hoặc 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. Lỗi sqlserver_ado không phải là chương trình phụ trợ cơ sở dữ liệu có sẵn (PyISAPIe trên IIS)

  2. T-SQL loại bỏ tất cả các ký tự không phải chữ cái và không phải số

  3. Làm thế nào để xuất trường hình ảnh sang tệp?

  4. Thực thi tác vụ SSIS từ ứng dụng C #

  5. Cách bỏ thuộc tính nhận dạng của một cột trong bảng SQL Server - Hướng dẫn sử dụng SQL Server / T-SQL 44