Svaret er JA.
HVIS(cond,expr_true,expr_false) i en mysql-forespørgsel er kortsluttet.
Her en test, der bruger @variables til at bevise det 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 er '5' fra alle tre SELECT-forespørgsler.
Havde IF()-funktionen IKKE kortsluttet, ville resultatet være en '5' fra SELECT #1, og '6' fra SELECT #2, og en '7' fra den sidste "select @var".
Dette skyldes, at det "sande" udtryk ALDRIG udføres, i vælg #1, og det falske udtryk udføres heller ikke for udvalgt #2.
Bemærk, at ':='-operatoren bruges til at ændre en @var i en SQL-forespørgsel (select, from og where-sætninger). Du kan få noget virkelig fancy/kompleks SQL fra dette. Jeg har brugt @vars til at anvende 'proceduremæssig' logik i en SQL-forespørgsel.
-- J Jørgenson --