Las operaciones de comparación dan un valor de
        1 (CIERTO), 0 (FALSO), o
        NULL. Estas operaciones funcionan tanto para
        números como para cadenas de caracteres. Las cadenas de
        caracteres se convierten automáticamente en números y los
        números en cadenas cuando es necesario.
      
        Algunas de las funciones de esta sección (tales como
        LEAST() y GREATEST())
        retornan valores distintos a 1 (CIERTO),
        0 (FALSO), o NULL. Sin
        embargo, el valor que retornan se basa en operaciones de
        comparación realizadas como describen las siguientes reglas.
      
MySQL compara valores usando las siguientes reglas:
            Si uno o ambos argumentos son NULL, el
            resultado de la comparación es NULL,
            excepto para el operador de comparación
            NULL-safe <=> .
          
Si ambos argumentos en una operación de comparación son cadenas, se comparan como cadenas.
Si ambos argumentos son enteros, se comparan como enteros.
Los valores hexadecimales se tratan como cadenas binarias si no se comparan con un número.
            Si uno de los argumentos es una columna
            TIMESTAMP o DATETIME y
            el otro argumento es una constante, la constante se
            convierte en timestamp antes de realizar la comparación.
            Esto se hace para acercarse al comportamiento de ODBC. Esto
            no se hace para argumentos en IN()! Para
            estar seguro, siempre use cadenas completas de fechas/horas
            al hacer comparaciones.
          
En todos los otros casos, los argumentos se comparan como números con punto flotante (reales).
Por defecto, la comparación de cadenas no es sensible a mayúsculas y usa el conjunto de caracteres actual (ISO-8859-1 Latin1 por defecto, que siempre funciona bien para inglés).
        Par convertir un valor a un tipo específico para una
        comparación, puede usar la función CAST() .
        Los valores de cadenas de caracteres pueden convertirse a un
        conjunto de caracteres distinto usando
        CONVERT(). Consulte
        Sección 12.8, “Funciones y operadores de cast”.
      
Los siguientes ejemplos ilustran conversión de cadenas a números para operaciones de comparación:
mysql> SELECT 1 > '6x';
        -> 0
mysql> SELECT 7 > '6x';
        -> 1
mysql> SELECT 0 > 'x6';
        -> 0
mysql> SELECT 0 = 'x6';
        -> 1
        Tenga en cuanta que cuando compara una columna de cadenas de
        caracteres con un número, MySQL no puede usar el índice de la
        columna para buscar rápidamente le valor. Si
        str_col es una columna de cadenas
        indexada, el índice no puede usarse al realizar la búsqueda en
        el siguiente comando:
      
SELECT * FROMtbl_nameWHEREstr_col=1;
        La razón es que hay diferentes cadenas que pueden convertirse
        al valor 1: '1',
        ' 1', '1a', ...
      
            =
          
Igual:
mysql> SELECT 1 = 0;
        -> 0
mysql> SELECT '0' = 0;
        -> 1
mysql> SELECT '0.0' = 0;
        -> 1
mysql> SELECT '0.01' = 0;
        -> 0
mysql> SELECT '.01' = 0.01;
        -> 1
            <=>
          
            NULL-safe equal. Este operador realiza
            una comparación de igualdad como el operador
            =, pero retorna 1 en lugar de
            NULL si ambos operandos son
            NULL, y 0 en lugar de
            NULL si un operando es
            NULL.
          
mysql> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL;
        -> 1, 1, 0
mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL;
        -> 1, NULL, NULL
            <>, !=
          
Diferente:
mysql> SELECT '.01' <> '0.01';
        -> 1
mysql> SELECT .01 <> '0.01';
        -> 0
mysql> SELECT 'zapp' <> 'zappp';
        -> 1
            <=
          
Menor que o igual:
mysql> SELECT 0.1 <= 2;
        -> 1
            <
          
Menor que:
mysql> SELECT 2 < 2;
        -> 0
            >=
          
Mayor que o igual:
mysql> SELECT 2 >= 2;
        -> 1
            >
          
Mayor que:
mysql> SELECT 2 > 2;
        -> 0
            IS , valor
            booleanoIS NOT
            
          valor booleano
            Comprueba si un valor contra un valor booleano, donde
            boolean_value puede ser
            TRUE, FALSE, o
            UNKNOWN.
          
mysql> SELECT 1 IS TRUE, 0 IS FALSE, NULL IS UNKNOWN;
        -> 1, 1, 1
mysql> SELECT 1 IS NOT UNKNOWN, 0 IS NOT UNKNOWN, NULL IS NOT UNKNOWN;
        -> 1, 1, 0
            IS [NOT]  sintaxis se añadió en
            MySQL 5.0.2.
          valor
            booleano
            IS NULL, IS NOT NULL
          
            Testea si un valor es o no NULL.
          
mysql> SELECT 1 IS NULL, 0 IS NULL, NULL IS NULL;
        -> 0, 0, 1
mysql> SELECT 1 IS NOT NULL, 0 IS NOT NULL, NULL IS NOT NULL;
        -> 1, 1, 0
            
            
            Para poder trabajar con programas ODBC, MySQL soporta las
            siguientes características extra al usar IS
            NULL:
          
                Puede encontrar el registro que contiene el valor
                AUTO_INCREMENT más reciente
                realizando un comando de la siguiente forma
                inmediatamente tras generar el valor:
              
SELECT * FROMtbl_nameWHEREauto_colIS NULL
                Este comportamiento puede desactivarse asignando
                SQL_AUTO_IS_NULL=0. Consulte
                Sección 13.5.3, “Sintaxis de SET”.
              
                Para columnas DATE y
                DATETIME que se declaran como
                NOT NULL, puede encontrar la fecha
                especial '0000-00-00' con un comando
                como este:
              
SELECT * FROMtbl_nameWHEREdate_columnIS NULL
                Esto es necesario para algunas aplicaciones ODBC, ya que
                ODBC no soporta un valor de fecha
                '0000-00-00' .
              
            expr BETWEEN
            min AND
            max
            Si expr es mayor o igual que
            min y
            expr es menor o igual a
            max, BETWEEN
            retorna 1, de otro modo retorna
            0. Esto es equivalente a la expresión
            ( si todos los
            argumentos son del mismo tipo. De otro modo la conversión
            de tipos tiene lugar según las reglas descritas al
            principio de la sección, pero aplicadas a todos los
            argumentos.
          min <=
            expr AND
            expr <=
            max)
mysql> SELECT 1 BETWEEN 2 AND 3;
        -> 0
mysql> SELECT 'b' BETWEEN 'a' AND 'c';
        -> 1
mysql> SELECT 2 BETWEEN 2 AND '3';
        -> 1
mysql> SELECT 2 BETWEEN 2 AND 'x-3';
        -> 0
            expr NOT BETWEEN
            min AND
            max
            Esto es lo mismo que NOT
            (.
          expr BETWEEN
            min AND
            max)
            COALESCE(
          value,...)
            Retorna el primer valore no NULL de la
            lista.
          
mysql> SELECT COALESCE(NULL,1);
        -> 1
mysql> SELECT COALESCE(NULL,NULL,NULL);
        -> NULL
            GREATEST(
          value1,value2,...)
            Con dos o más argumentos, retorna el argumento mayor (con
            valor mayor). Los argumentos se comparan usando las mismas
            reglas que para LEAST().
          
mysql> SELECT GREATEST(2,0);
        -> 2
mysql> SELECT GREATEST(34.0,3.0,5.0,767.0);
        -> 767.0
mysql> SELECT GREATEST('B','A','C');
        -> 'C'
            expr IN
            (value,...)
            Retorna 1 si
            expr es uno de los valores en la
            lista IN , de lo contrario retorna
            0. Si todos los valores son constantes,
            se evalúan según el tipo y ordenación de
            expr . La búsqueda para el
            elemento se hace usando búsqueda binaria. Esto significa
            que IN es muy rápido si la lista
            IN consiste enteramente en constantes. Si
            expr es una expresión de cadenas
            de caracteres sensible a mayúsculas, la comparación de
            cadenas se realiza sensible a mayúsculas.
          
mysql> SELECT 2 IN (0,3,5,'wefwf');
        -> 0
mysql> SELECT 'wefwf' IN (0,3,5,'wefwf');
        -> 1
            El número de valores en la lista IN
            sólo está limitado por el valor
            max_allowed_packet.
          
            En MySQL 5.0, para cumplir el estándar SQL
            IN retorna NULL no
            sólo si la expresión de la parte izquierda es
            NULL, también si no encuentra
            coincidencias en la lista y una de las expresiones en la
            lista es NULL.
          
            La sintaxis de IN() puede usarse para
            escribir algunas subconsultas. Consulte
            Sección 13.2.8.3, “Subconsultas con ANY, IN y
          SOME”.
          
            expr NOT IN
            (value,...)
            Esto es lo mismo que NOT
            (.
          expr IN
            (value,...))
            ISNULL(
          expr)
            Si expr es
            NULL, ISNULL() retorna
            1, sino retorna 0.
          
mysql> SELECT ISNULL(1+1);
        -> 0
mysql> SELECT ISNULL(1/0);
        -> 1
            Una comparación de valores NULL usando
            = siempre es falsa.
          
            La función ISNULL() comparte algunos
            comportamientos especiales con el operador de comparación
            IS NULL, consulte la descripción de
            IS NULL en
            Sección 12.1.3, “Funciones y operadores de comparación”.
          
            INTERVAL(
          N,N1,N2,N3,...)
            Retorna 0 if N
            < N1, 1 si
            N <
            N2 y así o -1
            si N es NULL.
            Todos los argumentos se tratan como enteros. Esto requiere
            que N1 <
            N2 <
            N3 < ...
            < Nn para que la función
            funcione correctamente. Esto es porque se usa una búsqueda
            binaria (muy rápida).
          
mysql> SELECT INTERVAL(23, 1, 15, 17, 30, 44, 200);
        -> 3
mysql> SELECT INTERVAL(10, 1, 10, 100, 1000);
        -> 2
mysql> SELECT INTERVAL(22, 23, 30, 44, 200);
        -> 0
            LEAST(
          value1,value2,...)
Con dos o más argumentos, retorna el argumento menor (con un valor menor). Los argumentos se comparan usando las siguientes reglas:
                Si el valor retornado se usan en un contexto
                INTEGER o todos los argumentos son
                enteros, se comparan como enteros.
              
                Si el valor retornado se usa en un contexto
                REAL o todos los argumentos son
                reales, se comparan como reales.
              
Si algún argumento es una cadena de caracteres sensible a mayúsculas, los argumentos se comparan como cadenas sensibles a mayúsculas.
En cualquier otro caso, los argumentos se comparan como cadenas no sensibles a mayúsculas.
mysql> SELECT LEAST(2,0);
        -> 0
mysql> SELECT LEAST(34.0,3.0,5.0,767.0);
        -> 3.0
mysql> SELECT LEAST('B','A','C');
        -> 'A'
Tenga en cuenta que las reglas de conversión precedentes pueden producir resultados extraños en algunos casos extremos:
mysql> SELECT CAST(LEAST(3600, 9223372036854775808.0) as SIGNED);
    -> -9223372036854775808
            Esto ocurre porque MySQL lee
            9223372036854775808.0 en un contexto
            entero. La representación entera no es lo bastante buena
            para tratar el valor, así que lo cambia a entero con signo.
          
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.

