Связь и интернет Архив Программирование
   
Сделать стартовойСделать закладку            
   ПОИСК  
   
Главная / MySQL / Справочник по языку MySQL /
8  Perl
8  PHP
8  JavaScript
8  HTML
8  DHTML
8  XML
8  CSS
8  C / C++
8  Pascal и Delphi
8  Турбо Ассемблер
8  MySQL
8  CASE-технологии
8  Алгоритмы
8  Python
8  Обратная связь
8  Гостевая книга
Новости о мире


Функции, используемые в операторах SELECT и WHERE (часть 2) - Программирование от RIN.RU
Функции, используемые в операторах SELECT и WHERE (часть 2)




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


Функция 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.


Вперед  >>>
 1  2  3 


 8  Комментарии к статье  8 8  Обсудить в чате

8  В тему

Структура языка

Типы данных столбцов

Функции, используемые в операторах SELECT и WHERE (часть 1)

Обработка данных: SELECT, INSERT, UPDATE, DELETE

Определение данных: CREATE, DROP, ALTER

Основные команды пользовательских программ MySQL

Команды управления транзакциями и блокировками в MySQL

Полнотекстовый поиск в MySQL

Кэш запросов в MySQL

 
  
  
    Copyright ©  RIN 2003 - 2004      * Обратная связь