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

Ý nghĩa của KHÔNG ĐẦY ĐỦ ĐỊNH NGHĨA '' là gì?

NULL có hành vi đặc biệt:so sánh bất cứ thứ gì với NULL sẽ trả lại cho bạn một NULL , là một cái gì đó khác với false hoặc 0 . Nó có nghĩa là "không xác định".

Ví dụ:lấy bảng sau:

 user_id | gender
------------------
 1       | NULL
 2       | 'M'
 3       | 'F'
 4       | 'F'

SELECT * FROM mytable WHERE gender = 'M' sẽ trả về 1 hàng, như mong đợi

SELECT * FROM mytable WHERE gender != 'M' sẽ trả về 2 hàng, KHÔNG phải 3 hàng.

SELECT * FROM mytable WHERE gender != 'M' OR gender IS NULL sẽ trả về 3 hàng mong đợi.

Chỉnh sửa:Đối với một số ứng dụng, sử dụng 0 (hoặc, xin Chúa cấm, một "số ma thuật" khác) thay vì NULL thậm chí không được khuyến khích (đơn vị hoặc giá trị chính xác không liên quan trong ví dụ này):

 Date       | Temperature 
--------------------------
 2010-01-01 | 10          
 2010-01-02 | 4
 2010-01-03 | 0
 2010-01-04 | -22
 2010-01-05 | -45
 2010-01-06 | NULL
 2010-01-07 | -34

Đây, NULL vào ngày 6 tháng 1 có nghĩa là "giá trị không xác định" - có thể do nhiệt độ quá thấp nên đầu dò nhiệt kế ngừng phản hồi. Tuy nhiên, nó có ý nghĩa hoàn toàn khác với ngày 3 tháng 1, khi nhiệt độ là 0 , nghĩa là, 0 độ.

Ngoài ra, như @Bill Karwin đã đề cập, NULL hoạt động đặc biệt trong các hàm tổng hợp (COUNT , SUM , AVG v.v.):tính toán AVG(Temperature) trên dữ liệu trên sẽ cung cấp cho bạn -14.5 , vì hàng NULL bị bỏ qua.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chuyển đổi phân tách có điều kiện:Xuất dữ liệu từ SQL Server sang Cơ sở dữ liệu Oracle và MySQL

  2. Tìm hiểu cách sao lưu cơ sở dữ liệu MySQL của bạn

  3. Thứ tự tham số được đặt tên có ý nghĩa đối với nhà cung cấp dữ liệu MySql .Net?

  4. Cách cài đặt phpMyAdmin trên các tài khoản lưu trữ được quản lý

  5. MySQL:Làm cách nào để lấy dấu thời gian của lần chèn cuối cùng vào cơ sở dữ liệu