Справочник от Автор24
Найди эксперта для помощи в учебе
Найти эксперта
+2

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

Способы приведения типов

В большинстве случаев приведение типов в SQL осуществляется автоматически.

Например, запрос SELECT 25+’35’;вернет результат 60. Арифметическая операция «+» служит основанием для преобразования строки ‘35’ в число.

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

  • Сравнение строк с помощью инструкции BINARY.
  • Преобразование типа с помощью функции CAST().
  • Преобразование из одной кодировки в другую с помощью функции CONVERT().

Сравнение строк с помощью инструкции BINARY

В MySQL сравнение строк не учитывает регистр. То есть строки «ООО ТОПАЗ» и «ООО Топаз» считаются одинаковыми. Но бывают ситуации, когда регистр учесть нужно. Для сравнения с учетом регистра в запрос нужно добавить инструкцию BINARY:

BINARY строка1=строка2;

ИЛИ

строка1 BINARY= строка2;

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

Пример 1

SELECT «ООО Топаз»= «ООО ТОПАЗ»;

Результат: 1 (то есть истина)

SELECT BINARY «ООО Топаз»= «ООО ТОПАЗ»;

Результат: 0 (то есть ложь).

SELECT «ООО Топаз»BINARY = «ООО ТОПАЗ»;

Результат: 0 (то есть ложь).

Можно использовать инструкцию Binary при задании условия отбора внутри инструкции WHERE:

Пример 2

SELECT * clients WHERE BINARY client_name =”ООО Топаз”;

Или

SELECT * clients WHERE client_name BINARY =”ООО Топаз”;

«Функции приведения типов» 👇
Помощь эксперта по теме работы
Найти эксперта
Решение задач от ИИ за 2 минуты
Решить задачу
Помощь с рефератом от нейросети
Написать ИИ

Преобразование типа с помощью функции CAST()

Функция CAST() является стандартной функцией преобразования типов, используемой в различных диалектах SQL. Она имеет следующий синтаксис:

CAST(выражение AS тип);

Выражение – это то выражение, которое должно быть преобразовано к другому типу.

Тип – это тот тип, к которому нужно преобразовать выражение. Аргумент тип может быть принимать следующие значения:

  • BINARY
  • CHAR [N]
  • DATE
  • DATETIME
  • SIGNED [INTEGER]
  • TIME
  • UNSIGNED [INTEGER]
Пример 3

Преобразование числа в дату:

SELECT CAST(19861111 AS date);

Результат: 1986-11-11.

Пример 4

Преобразование даты в сокращенный формат:

SELECT NOW();

Результат: 2016-08-30 13:01:46

SELECT CAST(NOW() AS date);

Результат: 2016-08-30.

Пример 5

В таблице booking поле amount имеет тип DOUBLE.

Необходимо привести это поле к типу DECIMAL из четырех знаков, два из которых поле запятой.

SELECT fio, CAST(amount AS DECIMAL(4,2)) from booking;

Результат:

Функции приведения типов. Автор24 — интернет-биржа заказчиков и авторов

Функция CAST() бывает полезной при сортировке. Если сортировать по некоторому полю как числовому, то результат будет не таким как при сортировке по тому же полю как по текстовому. Для числового поля значение 2 будет предшествовать значению 10. Для текстового поля значение 10 будет предшествовать значению 2.

Пример 6

SELECT * from booking ORDER BY idbooking;

Результат:

Функции приведения типов. Автор24 — интернет-биржа заказчиков и авторов

SELECT * from booking ORDER BY cast(idbooking as char);

Результат:

Функции приведения типов. Автор24 — интернет-биржа заказчиков и авторов

Преобразование из одной кодировки в другую с помощью функции CONVERT()

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

CONVERT( выражение, тип);

Для преобразования кодировки:

CONVERT(выражение USING кодировка);

Пример 7

Запросы

SELECT CAST(Now() AS date); и

SELECT CONVERT(Now(),date);

Дают одинаковый результат: 2016-08-30.

Для преобразования из текущей кодировки в кодировку cp1251 нужно выполнить запрос:

Пример 8

SELECT CONVERT(«ООО Топаз» USING cp1251) from booking;

Результат: «ООО Топаз» (но уже в другой кодировке!).

Воспользуйся нейросетью от Автор24
Не понимаешь, как писать работу?
Попробовать ИИ
Дата написания статьи: 30.08.2016
Найди решение своей задачи среди 1 000 000 ответов
Крупнейшая русскоязычная библиотека студенческих решенных задач
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot