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

Bí ẩn của MySQL:Giá trị rỗng không khác với chuỗi không rỗng

Một cách chính xác. NULL đại diện cho một giá trị không xác định, không phải bất kỳ giá trị cụ thể nào (nó không giống với NULL bằng C hoặc nil trong Ruby, v.v.) Trong SQL, nếu bạn so sánh một thứ gì đó với giá trị không xác định, kết quả cũng không xác định. Và bạn sẽ không nhận được các hàng mà WHERE tình trạng không xác định.

Hãy thử điều này:

SELECT NULL <> 2;

và bạn sẽ thấy NULL kết quả là.

Hãy thử điều này:

SELECT * FROM t WHERE NULL;

và không có hàng nào xuất hiện, ngay cả khi bảng t rất lớn.

Nếu bạn thực sự cần những gì bạn đã nói là bạn muốn (và tôi không ủng hộ điều này), bạn có thể làm điều gì đó như sau:

SELECT T.f1, T.f2
FROM (SELECT NULL f1, 'a' f2) T
WHERE ((T.f1 IS NULL OR T.f2 IS NULL)
    AND (T.f1 IS NOT NULL OR T.f2 IS NOT NULL))
    OR T.f1 <> T.f2


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kết nối DATABASE LOẠI lỗi:2002:Quyền bị từ chối

  2. mysql:cách cắt bớt độ dài của một trường

  3. Thứ tự Lon / Lat khi sử dụng kiểu POINT không gian với MySQL

  4. Sử dụng Cơ sở dữ liệu quan hệ MySQL trên Ubuntu 10.10 (Maverick)

  5. bbPress:Cách tìm ánh xạ các tệp đính kèm đến các bài đăng tương ứng của chúng