Curso de MySQL
Consultas, lista de correo 'C++ Con Clase' 'MySQL Con Clase' página de entrada Tabla de contenido Contactar con Webmaster
Curso Sentencias Funciones API C

SQL

Funciones

Matemáticas Tiempo ADDDATE ADDTIME CONVERT_TZ CURDATE CURRENT_DATE CURRENT_TIME CURRENT_TIMESTAMP CURTIME DATE DATEDIFF DATE_ADD DATE_FORMAT DATE_SUB DAY DAYNAME DAYOFMONTH DAYOFWEEK DAYOFYEAR EXTRACT FROM_DAYS FROM_UNIXTIME GET_FORMAT HOUR LAST_DAY LOCALTIME LOCALTIMESTAMP MAKEDATE MAKETIME MICROSECOND MINUTE MONTH MONTHNAME NOW PERIOD_ADD PERIOD_DIFF QUARTER SECOND SEC_TO_TIME STR_TO_DATE SUBDATE SUBTIME SYSDATE TIME TIMEDIFF TIMESTAMP TIMESTAMPADD TIMESTAMPDIFF TIME_FORMAT TIME_TO_SEC TO_DAYS UNIX_TIMESTAMP UTC_DATE UTC_TIME UTC_TIMESTAMP WEEK WEEKDAY WEEKOFYEAR YEAR YEARWEEK Cadena Conversión Control de Flujo Encriptado Información Genéricas GROUP BY

IF

IF(expr1,expr2,expr3)

Si la expr1 es TRUE (expr1 <> 0 and expr1 <> NULL) entonce IF() devuelve expr", en caso contrario, devolverá expr3. IF() devuelve un valor numérico o una cadena, dependiendo del contexto en el que se use.

mysql> SELECT IF(1>2,2,3);
        -> 3
mysql> SELECT IF(1<2,'yes','no');
        -> 'yes'
mysql> SELECT IF(STRCMP('test','test1'),'no','yes');
        -> 'no'

Si sólo expr2 o expr3 es explícitamente NULL, el tipo del resultado de la función IF() es el de la expresión no nula. (Este comportamiento es nuevo en MySQL 4.0.3.) expr1 se evalúa como un valor entero, lo que significa que si se están comprobando valores en coma flotante o cadenas, se debe usar siempre una operación de comparación.

mysql> SELECT IF(0.1,1,0);
        -> 0
mysql> SELECT IF(0.1<>0,1,0);
        -> 1

En el primer caso mostrado, IF(0.1) devuelve 0 porque 0.1 se convierte a un valor entero, resultando la verificación IF(0). Esto no es lo que probablemente se esperaba. En el segundo caso, la comparación comprueba el valor de punto flotante original para comprobar si es distinto de cero. El resultado de la comparación se usa como un entero. El tipo del valor de retorno por defecto para IF() (lo cual puede ser importante cuando sea almacenado en una tabla temporal) se calcula en MySQL 3.23 como sigue:

Expresión Valor de retorno
expr2 o expr3 devuelve una cadena cadena
expr2 o expr3 devuelve un valor en coma flotante coma flotante
expr2 o expr3 devuelve un entero entero

Si expr2 y expr3 son cadenas, el resultado será sensible al tipo si cualquiera de las cadenas lo es (a partir de MySQL 3.23.51).