MySQL Cast функции и операторы
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 программирования