Bởi vì bất kỳ toán tử so sánh nào trên NULL
xuất hiện trong bộ lọc sql nên (và hiện) làm cho hàng không được chọn.
Bạn nên sử dụng toán tử an toàn rỗng <=>
để so sánh với cột chứa NULL
các giá trị và NOT NULL
khác giá trị nhưng <=>
sẽ trả về 1
khi cả hai toán hạng là NULL
bởi vì NULL
không bao giờ được coi là bằng với NULL
.
Đây là một ví dụ về tình huống mà toán tử null safe rất hữu ích:
Bạn có một bảng:
Phones
----
Number
CountryCode (can be NULL)
Và bạn muốn chọn tất cả các số điện thoại không đến từ Tây Ban Nha (mã quốc gia 34). Lần thử đầu tiên thường là:
SELECT Number FROM Phones WHERE CountryCode <> 34;
Nhưng bạn nhận thấy rằng có những điện thoại không có mã quốc gia (giá trị NULL) không được liệt kê và bạn muốn đưa chúng vào kết quả của mình vì chúng không đến từ Tây Ban Nha:
SELECT Number FROM Phones WHERE CountryCode <=> 34;