Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Apakah MySQL Short Circuit fungsi IF()?

Jawabannya adalah YA.
JIKA(cond,expr_true,expr_false) dalam kueri mysql dihubung pendek.

Berikut tes, menggunakan @variables untuk membuktikan fakta:

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;

Hasilnya adalah '5' dari ketiga kueri SELECT.

Jika fungsi IF() TIDAK hubung singkat, hasilnya adalah '5' dari SELECT #1, dan '6' dari SELECT #2, dan '7' dari "select @var" terakhir.

Ini karena ekspresi 'true' TIDAK PERNAH dieksekusi, di pilih #1 dan ekspresi salah juga tidak dieksekusi untuk pilih #2.

Perhatikan bahwa operator ':=' digunakan untuk memodifikasi @var, dalam kueri SQL (klausa pilih,dari, dan tempat). Anda bisa mendapatkan SQL yang sangat mewah/kompleks dari ini. Saya telah menggunakan @vars untuk menerapkan logika 'prosedural' dalam kueri 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. Di mana tepatnya lokasi tabel database MySQL di folder XAMPP?

  2. default kolom dengan string kosong

  3. Penyesuaian Kinerja Kueri MySQL

  4. Laravel:Bagaimana cara menghapus baris dari beberapa tabel dengan id yang sama dengan hanya 1 kueri?

  5. JSON_CONTAINS() Contoh di MySQL