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

Sử dụng một tuyên bố trường hợp với IS NULL và KHÔNG NULL

Bạn đang sử dụng sai case biểu hiện. Có hai hình thức. Hình thức bạn muốn là:

(CASE WHEN userName IS NULL THEN 'was null'
      WHEN userName IS NOT NULL THEN 'was not null'
 END) AS caseExpressionTest

Lưu ý:Không có userName sau CASE .

Điều này sẽ kiểm tra từng điều kiện dừng ở điều kiện đầu tiên.

MySQL diễn giải boolean như một giá trị hợp lệ. Vì vậy, phiên bản của bạn là:

-- when userName is NULL
(CASE userName
    WHEN 0 THEN 'was null'
    WHEN 1 THEN 'was not null'
END AS caseExpressionTest

Điều này sẽ trả về NULL .

Hoặc:

-- when userName is not NULL
(CASE userName
    WHEN 1 THEN 'was null'
    WHEN 0 THEN 'was not null'
END AS caseExpressionTest

Có lẽ, userName là một chuỗi. Điều này sẽ chuyển đổi userName thành một số nguyên dựa trên các chữ số đứng đầu. Nếu không có chữ số đứng đầu, bạn nhận được 0 , đó là lý do tại sao có sự trùng khớp.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách sử dụng nhiều cơ sở dữ liệu trong Laravel

  2. Tại sao tôi nhận được Truy vấn lỗi MySQL trống?

  3. Có cách nào để xóa một hàng khỏi mysql sau một khoảng thời gian nhất định tính từ thời gian chèn không

  4. Trích xuất chuỗi con MySQL sử dụng dấu phân cách

  5. Tốc độ chèn Mysql InnoDB Quá chậm?