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

MySQL Short Circuit có hàm IF () không?

Câu trả lời là CÓ.
IF (cond, expr_true, expr_false) trong một truy vấn mysql bị đoản mạch.

Đây là một bài kiểm tra, sử dụng @variables để chứng minh thực tế:

SET @var:=5;  
SELECT IF(1 = 0, (@var:[email protected] + 1), @var ); -- using ':=' operator to modify 'true' expr @var 
SELECT IF(1 = 1, @var, (@var:[email protected] + 1) ); -- using ':=' operator to modify 'false' expr @var 
SELECT @var;

Kết quả là '5' từ cả ba truy vấn SELECT.

Nếu hàm IF () KHÔNG bị đoản mạch, kết quả sẽ là '5' từ SELECT # 1 và '6' từ SELECT # 2 và '7' từ "select @var" cuối cùng.

Điều này là do biểu thức 'true' KHÔNG BAO GIỜ được thực thi trong lựa chọn số 1 và biểu thức sai cũng không được thực thi đối với lựa chọn số 2.

Lưu ý rằng toán tử ':=' được sử dụng để sửa đổi @var, trong một truy vấn SQL (mệnh đề select, from và where). Bạn có thể nhận được một số SQL thực sự phức tạp / phức tạp từ điều này. Tôi đã sử dụng @vars để áp dụng logic 'thủ tục' trong một truy vấn SQL.

- J Jorgenson -



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tại sao các hàng sẽ khớp nhưng không được thay đổi với câu lệnh cập nhật mysql?

  2. Không có thực thể ORM của Doctrine được ánh xạ theo cấu hình hiện tại

  3. Chèn nhiều hàng với PDO

  4. Tại sao `log_slow_queries` phá vỡ` my.cnf`?

  5. 10 mẹo hữu ích về điều chỉnh hiệu suất MySQL