sql >> Databasteknik >  >> RDS >> Mysql

Kortsluter MySQL IF()-funktionen?

Svaret är JA.
OM(cond,expr_true,expr_false) i en mysql-fråga är kortsluten.

Här ett test som använder @variables för att bevisa faktum:

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;

Resultatet är '5' från alla tre SELECT-frågor.

Hade IF()-funktionen INTE kortslutits, skulle resultatet bli en '5' från SELECT #1, och '6' från SELECT #2, och en '7' från den sista "select @var".

Detta beror på att uttrycket "true" ALDRIG exekveras, i välj #1 och inte heller det falska uttrycket exekveras för valt #2.

Observera att operatorn ':=' används för att modifiera en @var i en SQL-fråga (select, from och where-satser). Du kan få lite riktigt snygg/komplex SQL från detta. Jag har använt @vars för att tillämpa 'procedurlogik' i en SQL-fråga.

-- J Jörgenson --



  1. hur får man en detaljerad felrapport när ett php-mysql-skript misslyckas?

  2. #1221 - Felaktig användning av UPDATE och ORDER BY

  3. Designa en datamodell för ett hotellrumsbokningssystem

  4. MySQL:Räkna poster från en tabell och uppdatera sedan en annan