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

Làm cách nào để viết một so sánh an toàn rỗng <=> trong SQL thuần túy?

Các câu trả lời được xếp hạng thứ hai và các câu trả lời tiếp theo cung cấp một phương pháp để thực hiện điều này mà không ràng buộc giá trị tìm kiếm hai lần:

SELECT * FROM ROUTERS 
WHERE coalesce(ROUTER_ADDRESS, '') = coalesce( ?, '');

Lưu ý rằng điều này yêu cầu một giá trị giả không bao giờ có thể là giá trị cột hợp lệ (đó là "nằm ngoài dải"); Tôi đang sử dụng chuỗi trống. Nếu bạn không có bất kỳ giá trị nào như vậy, bạn sẽ phải thực hiện việc ràng buộc giá trị hai lần:

SELECT * FROM ROUTERS 
WHERE ROUTER_ADDRESS = ? or (ROUTER_ADDRESS is null and ? is 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 1118 (42000) Kích thước hàng quá lớn

  2. Làm thế nào để kiểm tra xem một ngày có nằm giữa date1 và date2 hay không bằng cách sử dụng mysql?

  3. Tìm kiếm không phân biệt dấu phụ trong MySQL (tiếng Ả Rập)

  4. Quyền truy cập bị từ chối đối với người dùng 'root' @ 'localhost' (sử dụng mật khẩu:CÓ) (Mysql ::Lỗi)

  5. Mysql - Làm cách nào để sắp xếp các kết quả theo các hàng xen kẽ (1,2,3, 1, 2, 3, 1, 2, 3,), có được không?