Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL късо съединение на функцията IF()?

Отговорът е ДА.
IF(cond,expr_true,expr_false) в mysql заявка е късо съединение.

Ето тест, използващ @variables за доказване на факта:

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;

Резултатът е '5' и от трите SELECT заявки.

Ако функцията IF() НЕ беше на късо съединение, резултатът щеше да бъде '5' от SELECT #1 и '6' от SELECT #2 и '7' от последното "select @var".

Това е така, защото изразът 'true' НИКОГА не се изпълнява в избор №1 и не се изпълнява изразът false за избор №2.

Обърнете внимание, че операторът ':=' се използва за модифициране на @var в рамките на SQL заявка (клаузи select,from и where). Можете да получите наистина изискан/сложен SQL от това. Използвах @vars за прилагане на „процедурна“ логика в SQL заявка.

-- Дж. Йоргенсън --



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL TIMESTAMP до QDateTime с милисекунди

  2. Загуба на връзка с MySQL след известно време и не се свързва отново

  3. Импортиране на MS ACCESS DB към mySql?

  4. Показване на таблици в SQLite база данни в Python

  5. как да създадете страница за влизане в приложението за android?