sql >> Database teknologi >  >> RDS >> Mysql

Kortslutter MySQL IF()-funktionen?

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 --



  1. Avanceret databaseovervågning og -styring til TimescaleDB

  2. MYSQL-tabeloprettelse med standardværdi (udtryk) til en kolonne

  3. Hvordan opretter jeg et tabelalias i MySQL

  4. Løsning til:Gem opdatering, indsæt eller slet erklæring påvirkede et uventet antal rækker (0)