12.8. Funciones y operadores de cast

MySQL 5.0

12.8. Funciones y operadores de cast

  • El operador convierte la cadena a continuación a una cadena binaria. Esta es una forma fácil de forzar una comparación de columna byte a byte en lugar de carácter a carácter. Esto hace que la comparación sea sensible a mayúsculas incluso si no está definida como o . también hace que los espacios finales sean significativos.

    mysql> SELECT 'a' = 'A';
            -> 1
    mysql> SELECT BINARY 'a' = 'A';
            -> 0
    mysql> SELECT 'a' = 'a ';
            -> 1
    mysql> SELECT BINARY 'a' = 'a ';
            -> 0
    

    afecta la comparación; puede darse antes de cualquier operando con el mismo resultado.

    es una abreviación de AS BINARY).

    Tenga en cuenta que en algunos contextos, si cambia el tipo de una columna indexada, MySQL no es capaz de usar el índice eficientemente.

    Si quiere comparar un valor u otra cadena binaria de forma no sensible a mayúsculas, puede hacerlo teniendo en cuenta que las cadenas binarias no tienen conjunto de carácteres, y por lo tanto no tienen concepto de mayúsculas. Para una comparación no sensible a mayúsculas, use la función para convertir el valor de cadena a un conjunto de carácteres no sensible a mayúsculas. El resultado es una cadena no binaria. El resultado es una cadena no binaria, así que la operación no es sensible a mayúsculas:

    SELECT 'A' LIKE CONVERT( USING latin1) FROM ;
    

    Para usar un conjunto de carácteres diferente, substituya su nombre por en el comando precedente.

    puede usarse más generalmente para comparar cadenas que se representan en distintos conjuntos de carácteres.

  • AS ), ,) , USING )

    Las funciones y pueden usarse para tomar un valor de un tipo y producir un valor de otro tipo.

    puede ser uno de los siguientes valores:

    produce una cadena binaria. Consulte la entrada para el operador en esta sección para una descripción de cómo afecta esto a las comparaciones.

    El tipo está disponible desde MySQL 5.0.8.

    y son sintaxis SQL estándar. La forma no- de es sintaxis ODBC .

    con se usa para convertir datos entre distintos conjuntos de carácteres. En MySQL, los nombres transcodificados son los mismos que los nombres de los conjuntos de carácteres correspondientes. Por ejemplo, este comando convierte la cadena en el conjunto de carácteres por defecto del servidor a la cadena correspondiente en el conjunto de carácteres :

    SELECT CONVERT('abc' USING utf8);
    

Las funciones de conversión son útiles cuando quiere crear una columna con un tipo específico en un comando :

CREATE TABLE new_table SELECT CAST('2000-01-01' AS DATE);

Las funciones también pueden ser útiles para ordenar columnas en orden léxico. Normalmente ordenar columnas se hace usando el valor numérico interno. Convertir los valores en resulta en orden léxico:

SELECT  FROM  ORDER BY CAST( AS CHAR);

AS BINARY) es lo mismo que . AS CHAR) trata la expresión como una cadena con el conjunto de carácteres por defecto.

cambia el resultaod si lo usa como parte de una expresión más compleja como .

No debe usar para extraer datos en datos en distintos formatos sino usar funciones de cadenas como or . Consulte Sección 12.5, “Funciones de fecha y hora”.

Para convertir una cadena en un valor numérico en un contexto numérico, normalmente no tiene que hacer nada más que usar el valor de la cadena como si fuera un número:

mysql> SELECT 1+'1';
       -> 2

Si usa un número en un contexto de cadenas, el número se convierte automáticamente en una cadena string.

mysql> SELECT CONCAT('hello you ',2);
        -> 'hello you 2'

MySQL soporta aritmética con valores con y sin signo de 64-bit. Si usa operadores numéricos (tales como ) y uno de los operandos es un entero sin signo, el resultado no tiene signo. Puede cambiar este comportamiento usando los operadores y para cambiar la operación a un entero con o sin signo de 64-bit , respectivamente.

mysql> SELECT CAST(1-2 AS UNSIGNED)
        -> 18446744073709551615
mysql> SELECT CAST(CAST(1-2 AS UNSIGNED) AS SIGNED);
        -> -1

Tenga en cuenta que si un operando es un valor de coma flotante, el resultado es de coma flotante y no está afectado por la regla precedente. (En este contexto, los valores de la columna se tratan como valores con punto flotante.)

mysql> SELECT CAST(1 AS UNSIGNED) - 2.0;
        -> -1.0

Si usa una cadena en una operación aritmética, se convierte en número en coma flotante.