Справочное руководство по MySQL

6.3.5 Функции приведения типов

    6.3.5 Функции приведения типов

    Функция CAST имеет следующий синтаксис:

    CAST(expression AS type)
    

    или

    CONVERT(expression,type)
    

    где аргумент type представляет один из типов:

    • BINARY
    • DATE
    • DATETIME
    • SIGNED {INTEGER}
    • TIME
    • UNSIGNED {INTEGER}

    Функция CAST() соответствует синтаксису ANSI SQL99, а функция CONVERT() - синтаксису ODBC.

    Данная функция приведения типов используется главным образом для создания столбца конкретного типа с помощью команды CREATE ... SELECT:

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

    Выражение CAST string AS BINARY эквивалентно BINARY string.

    Для преобразования строки в числовую величину обычно не нужно ничего делать: просто используйте строку так, как будто это число:

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

    MySQL поддерживает арифметические операции с 64-битовыми величинами - как со знаковыми, так и с беззнаковыми. Если используются числовые операции (такие как +) и один из операндов представлен в виде unsigned integer, то результат будет беззнаковым. Его можно переопределить, используя операторы приведения SIGNED и UNSIGNED, чтобы получить 64-битовое целое число со знаком или без знака соответственно.

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

    Следует учитывать, что если один из операндов представлен величиной с плавающей точкой (в данном контексте DECIMAL() рассматривается как величина с плавающей точкой), результат также является величиной с плавающей точкой и не подчиняется вышеприведенному правилу приведения.

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

    Если в арифметической операции используется строка, то результат преобразуется в число с плавающей точкой.

    Функции CAST() и CONVERT() были добавлены в MySQL 4.0.2.

    В MySQL 4.0 была изменены правила обработки беззнаковых величин, чтобы обеспечить более полную поддержку величин типа BIGINT. Если код необходимо использовать и для MySQL 4.0, и для версии 3.23 (в которой функция CAST, скорее всего, не будет работать), то можно, применив следующий трюк, получить при вычитании двух беззнаковых целочисленных столбцов результат со знаком:

    SELECT (unsigned_column_1+0.0)-(unsigned_column_2+0.0);
    

    Идея состоит в том, что перед выполнением вычитания данные столбцы приводятся к типу с плавающей точкой.

    Если возникнут проблемы со столбцами типа UNSIGNED в старых приложениях MySQL при переносе их на MySQL 4.0, можно использовать параметр --sql-mode=NO_UNSIGNED_SUBTRACTION при запуске mysqld. Однако следует учитывать, что при этом теряется возможность эффективного использования столбцов типа UNSIGNED BIGINT.




Наш баннер
Вы можете установить наш баннер на своем сайте или блоге, скопировав этот код:
RSS новости