кодесурса
«MySQL

MySQL Cast функции и операторы

script1adsense2code
script1adsense3code

MySQL BINARY Operator

Оператор BINARY используется для принудительного сравнения столбцов за байтом, а не за символом, и сравнение становится чувствительным к регистру. BINARY также приводит к значению конечных пробелов.

Пример:

 mysql> SELECT 'x' = 'X';
+ ----------- +
| 'x' = 'X' |
+ ----------- +
| 1 |
+ ----------- +
1 ряд в наборе (0,00 сек)
mysql> SELECT BINARY 'x' = 'X';
+ ------------------ +
| BINARY 'x' = 'X' |
+ ------------------ +
| 0 |
+ ------------------ +
1 ряд в наборе (0,05 сек)
 mysql> SELECT 'x' = 'X';
+ ------------ +
| 'x' = 'X' |
+ ------------ +
| 0 |
+ ------------ +
1 ряд в наборе (0,00 сек)
mysql> SELECT BINARY 'x' = 'X';
+ ------------------- +
| BINARY 'x' = 'X' |
+ ------------------- +
| 0 |
+ ------------------- +
1 ряд в наборе (0,00 сек) 

MySQL CAST () функция

Функция CAST () используется для преобразования типа выражения в указанный тип. Функция аналогична функции CONVERT ().

Синтаксис:

CAST () функция:

 CAST (expr AS type))

Функция CONVERT ():

 CONVERT (expr USING transcoding_name) 

Список типов целей:

  • BINARY [(N)]: BINARY создает строку с типом данных BINARY. Если задана необязательная длина N, BINARY (N) заставляет приведение использовать не более N байтов аргумента.
  • CHAR [(N)]: Для функции CHAR (N) функция CAST () не может использовать более N символов аргумента.
  • ДАТА
  • DATETIME
  • ДЕСЯТИЧНАЯ [(М [, D])]
  • ПОДПИСАНО [INTEGER]
  • ВРЕМЯ
  • НЕ ПОДПИСАНО [INTEGER]

Пример: тип DECIMAL

Следующий код преобразует значения DECIMAL (commision_pct, 2,2) в значения CHAR и отображает имя и информацию о комиссии (где commision_pct> .30) из таблицы сотрудников.

Пример таблицы: сотрудники

 mysql> SELECT first_name, CONCAT ('Commisison Pct. -', CAST (Commission_pct AS CHAR)) от сотрудников WHERE Commission_pct> .30;
+ ------------ + ------------------------------------ ----------------------- +
| имя_файла | CONCAT ('Commisison Pct. -', CAST (Commission_pct AS CHAR)) |
+ ------------ + ------------------------------------ ----------------------- +
| Джон | Commisison Pct. - 0,40 |
| Джанетт | Commisison Pct. - 0,35 |
| Патрик | Commisison Pct. - 0,35 |
| Аллан | Commisison Pct. - 0,35 |
+ ------------ + ------------------------------------ ----------------------- +
4 ряда в наборе (0,00 сек)

Пример: тип DATETIME

Следующий оператор SQL преобразует значения DATE (hire-date) в значения DATETIME и отображает имя и объединяющую информацию о дате и времени из таблицы сотрудников.

 mysql> SELECT first_name, CAST (hire_date AS DATETIME) 'Дата присоединения' от сотрудников, где hire_date> ('1987-09-15');
+ ------------ + --------------------- +
| имя_файла | Дата вступления |
+ ------------ + --------------------- +
| Рэндалл | 1987-09-16 00:00:00 |
| Сара | 1987-09-17 00:00:00 |
| Бритни | 1987-09-18 00:00:00 |
| Самуил | 1987-09-19 00:00:00 |
| Вэнс | 1987-09-20 00:00:00 |
| Алана | 1987-09-21 00:00:00 |
| Кевин | 1987-09-22 00:00:00 |
| Дональд | 1987-09-23 00:00:00 |
| Дуглас | 1987-09-24 00:00:00 |
| Дженнифер | 1987-09-25 00:00:00 |
| Майкл | 1987-09-26 00:00:00 |
| Пэт | 1987-09-27 00:00:00 |
| Сьюзен | 1987-09-28 00:00:00 |
| Германн | 1987-09-29 00:00:00 |
| Шелли | 1987-09-30 00:00:00 |
| Уильям | 1987-10-01 00:00:00 |
+ ------------ + --------------------- +
16 рядов в наборе (0,04 сек)

CAST () и CONVERT (... USING ...) являются стандартным синтаксисом SQL. Неиспользуемая форма CONVERT () - это синтаксис ODBC. Функция CONVERT () с предложением USING используется для преобразования данных между различными наборами символов. В следующем примере оператор MySQL преобразует строку «птица», набор символов по умолчанию в соответствующую строку в наборе символов utf8:

 mysql> SELECT CONVERT ('bird' USING utf8);
+ ---------------------------- +
| КОНВЕРТ («птица» ИСПОЛЬЗОВАНИЕ utf8) |
+ ---------------------------- +
| птица |
+ ---------------------------- +
1 ряд в наборе (0,00 сек) 

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

 mysql> CREATE TABLE table2 SELECT CAST ('2012-12-12' AS DATE);
Запрос в порядке, затрагивается 1 строка (1,40 с)
Записи: 1 Дубликаты: 0 Предупреждения: 0
mysql> SELECT * FROM TABLE2;
+ ---------------------------- +
| АКТЕРЫ ('2012-12-12' КАК ДАТА) |
+ ---------------------------- +
| 2012-12-12 |
+ ---------------------------- +
1 ряд в наборе (0,04 сек)

- для сортировки столбцов ENUM в лексическом порядке. Обычно сортировка столбцов ENUM происходит с использованием внутренних числовых значений. Преобразование значений в CHAR приводит к лексической сортировке:

Код:

SELECT enum_col FROM table_name ORDER BY CAST(enum_col AS CHAR);

MySQL поддерживает арифметику с 64-битными значениями со знаком и без знака. При использовании числовых операторов (таких как + или -) и если один из операндов представляет собой целое число без знака, по умолчанию результат будет без знака.

 mysql> SELECT CAST (CAST (1-2 как неподписано) как подписано);
+ --------------------------------------- +
| CAST (CAST (1-2 подписано) подписано) |
+ --------------------------------------- +
| -1 |
+ --------------------------------------- +
1 ряд в наборе (0,00 сек)
mysql> SELECT CAST (1-2 AS UNSIGNED);
+ ----------------------- +
| АКТЕРЫ (1-2 без подписи) |
+ ----------------------- +
| 18446744073709551615 |
+ ----------------------- +
1 ряд в наборе (0,00 сек)

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

 mysql> SELECT CAST (11 AS UNSIGNED) - 3,0; 
+ ---------------------------- +
| АКТЕРЫ (11 без подписи) - 3,0 |
+ ---------------------------- +
| 8.0 |
+ ---------------------------- +
1 ряд в наборе (0,00 сек)

Предыдущий: Функции полнотекстового поиска MySQL
Далее: Информационные функции MySQL

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code