sql >> Databáze >  >> RDS >> Mysql

Zkratuje MySQL funkci IF()?

Odpověď je ANO.
IF(cond,expr_true,expr_false) v dotazu mysql je zkratovaný.

Zde je test, pomocí @proměnných k prokázání skutečnosti:

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;

Výsledek je '5' ze všech tří SELECT dotazů.

Pokud by funkce IF() NEZkratovala, výsledkem by bylo '5' z SELECT #1 a '6' z SELECT #2 a '7' z posledního "select @var".

Je to proto, že výraz 'true' není NIKDY proveden ve výběru #1 a ani nepravdivý výraz pro výběr #2.

Všimněte si, že operátor ':=' se používá k úpravě @var v rámci dotazu SQL (klauzule select,from a where). Z toho můžete získat opravdu luxusní/složité SQL. Použil jsem @vars k použití „procedurální“ logiky v rámci dotazu SQL.

-- J Jorgenson --



  1. Jak vrátit řádky, které mají stejné hodnoty sloupců v MySql

  2. VMware CPU Hot Plug vNUMA Effects na SQL Server

  3. MySQL:FULL OUTER JOIN - Jak sloučím jeden sloupec?

  4. Automatizovaný způsob převodu souborů XML do databáze SQL?