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

Строковые функции SQL

Функции преобразования

Функция CONV() преобразует числа из одной системы счисления в другие. Она имеет следующий синтаксис:

CONV(число,N,M)

Аргумент число находится в системе счисления с основанием N. Функция переводит его в систему счисления с основанием M и возвращает значение в виде строки.

Пример 1

Следующий запрос переводит число 2 из десятичной системы счисления в двоичную:

SELECT CONV(2,10,2);

Результат: 10

Для перевода числа 2E из шестнадцатиричной системы в десятичную требуется запрос:

SELECT CONV('2E',16,10);

Результат: 46

Функция CHAR() переводит ASCII-код в строки. Она имеет следующий синтаксис:

CHAR(n1,n2,n3..)

n1,n2,n3 – ASCII-коды символов.

Пример 2

SELECT CHAR(83,81,76);

Результат: SQL

Следующие функции возвращают длину строки:

  • LENGTH(строка);
  • OCTET_LENGTH(строка);
  • CHAR_LENGTH(строка);
  • CHARACTER_LENGTH(строка).
Пример 3

SELECT LENGTH('MySQL');

Результат: 5

Иногда бывает полезной функция BIT_LENGTH(строка), которая возвращает длину строки в битах.

Пример 4

SELECT BIT_LENGTH('MySQL');

Результат: 40

Функции работы с подстроками

Подстрокой обычно называют часть строки. Часто требуется узнать позицию первого вхождения подстроки в строку. Эту задачу в MySQL решают три функции:

  • LOCATE(подстрока, строка [,позиция]);
  • POSITION(подстрока, строка);
  • INSTR(строка, подстрока).

Если подстрока не содержится в строке, то все три функции возвращают значение 0. Функция INSTR() отличается от двух других порядком аргументов. Функция LOCATE() может содержать третий аргумент позиция, который позволяет искать подстроку в строке не с начала, а с указанной позиции.

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

SELECT LOCATE('Топаз', 'открытое акционерное общество Топаз');

Результат: 31

SELECT POSITION('Топаз', 'открытое акционерное общество Топаз');

Результат: 31

SELECT INSTR('открытое акционерное общество Топаз',’Топаз’);

Результат: 31

SELECT LOCATE('Топаз', ' Завод Топаз и ООО Топаз', 9);

Результат: 20

SELECT LOCATE('Алмаз', 'открытое акционерное общество Топаз');

Результат: 0

Функции LEFT(строка, N) и RIGHT(строка, N) возвращают соответственно крайние левые и крайние правые N символов в строке.

Пример 6

SELECT LEFT('СУБД MySQL', 4);

Результат: СУБД

SELECT RIGHT('СУБД MySQL', 5);

Результат: MySQL

Иногда требуется получить подстроку, которая начинается с некоторой заданной позиции. Для этого используются функции:

  • SUBSTRING(строка, позиция, N);
  • MID(строка, позиция, N).

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

Пример 7

SELECT SUBSTRING('СУБД MySQL - одна из самых популярных СУБД', 6,5);

Результат: MySQL

При работе с электронными адресами и адресами сайтов очень полезна функция SUBSTR_INDEX(). Функция имеет три аргумента:

SUBSTR_INDEX(строка, разделитель, N).

Аргумент N может быть положительным или отрицательным. Если он отрицательный, то функция находит N-ое вхождение разделителя, если считать справа. После чего возвращает подстроку, расположенную справа от найденного разделителя. Если N положительно, то функция находит N-ое вхождение разделителя слева и возвращает подстроку, расположенную слева от найденного разделителя.

Пример 8

SELECT SUBSTRING_INDEX('www.mysql.ru','.',2);

Результат: www.mysql

SELECT SUBSTRING_INDEX('www.mysql.ru','.',-2);

Результат: mysql.ru

Функция REPLACE(строка,подстрока1,подстрока2) позволяет заменить в строке все вхождения подстроки1 на подстроку2.

Пример 9

SELECT REPLACE('ООО Топаз','Топаз','АЛМАЗ');

Результат: ООО АЛМАЗ

Функции удаления пробелов

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

  • LTRIM(строка) – удаляет пробелы в начале строки;
  • RTRIM(строка) – удаляет пробелы в конце строки;
  • TRIM(строка) – удаляет все пробелы.
Пример 10

SELECT TRIM(' www.mysql.ru ');

Результат: www.mysql.ru

Функцию TRIM() можно использовать и с более сложным синтаксисом:

TRIM([ [BOTH | LEADING | TRAILING] [подстрока] FROM] строка)

В этом случае функция удаляет не пробелы, а все вхождения подстроки. При этом если задан аргумент LEADING, то только слева. Если задан аргумент TRAILING, то только справа. Если задан аргумент BOTH, то и слева и справа.

Пример 11

SELECT TRIM(LEADING 'w' FROM 'www.mysql.ru.www');

Результат: .mysql.ru.www

SELECT TRIM(TRAILING 'w' FROM 'www.mysql.ru.www');

Результат: www.mysql.ru

SELECT TRIM(BOTH 'w' FROM 'www.mysql.ru.www');

Результат: www.mysql.ru

Дата написания статьи: 04.09.2016
Найди решение своей задачи среди 1 000 000 ответов
Крупнейшая русскоязычная библиотека студенческих решенных задач
Все самое важное и интересное в Telegram

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

Перейти в Telegram Bot