SUBSTRING, MID, SUBSTRING_INDEX - возвращают подстроку из строки
SUBSTRING
Функция SUBSTRING
вырезает и возвращает заданное количество символов из строки.
Первым параметром функция принимает поле или строку, вторым параметром - с какой позиции начинать вырезания (нумерация символов начинается с 1), третьем параметром - сколько символов брать.
Третий параметр не является обязательным. Если он не указан, текст будет вырезан с указанной позиции и до конца строки.
Первый синтаксис:
SELECT SUBSTRING(поле, откуда_отрезать, сколько_символов_взять) FROM `имя_таблицы`; -- возможно применение операторов
Альтернативный синтаксис:
SELECT SUBSTRING(поле FROM откуда_отрезать FOR сколько_символов_взять) FROM `имя_таблицы`; -- возможно применение операторов
Третий параметр не обязателен, в этом случае текст будет вырезан с указанной позиции и до конца строки:
SELECT SUBSTRING(поле, откуда_отрезать) FROM `имя_таблицы`; -- возможно применение операторов
SELECT SUBSTRING(поле FROM откуда_отрезать) FROM `имя_таблицы`; -- возможно применение операторов
В данном примере из строки вырезаются и возвращаются 6 символов, начиная с 5-го:
SELECT id, SUBSTRING(text, 5, 6) as text FROM `texts`;
Запрос можно переписать в следующем виде:
SELECT id, SUBSTRING(text FROM 5 FOR 6) as text FROM `texts`;
В данном примере возвращается вся строка до конца, начиная с пятого символа:
SELECT id, SUBSTRING(text, 5) as text FROM `texts`;
Запрос можно переписать в следующем виде:
SELECT id, SUBSTRING(text FROM 5) as text FROM `texts`;
MID
Функция MID
вырезает и возвращает
заданное количество символов из строки. Первым
параметром функция принимает поле или строку,
вторым параметром - с какой позиции начинать
вырезания (нумерация символов начинается
с 1), третьем параметром - сколько символов брать.
Третий параметр не является обязательным. Если он не указан, текст будет вырезан с указанной позиции и до конца строки.
С тремя параметрами:
SELECT MID(поле, откуда_отрезать, сколько_символов_взять) FROM `имя_таблицы`; -- возможно применение операторов
Третий параметр не обязателен:
SELECT MID(поле, откуда_отрезать) FROM `имя_таблицы`; -- возможно применение операторов
В данном примере из строки вырезаются и возвращаются
6
символов, начиная с 5
-го:
SELECT id, MID(text, 5, 6) as text FROM `texts`;
В данном примере возвращается вся строка до конца, начиная с пятого символа:
SELECT id, MID(text, 5) as text FROM `texts`;
SUBSTRING_INDEX
Функция SUBSTRING_INDEX
возвращает
подстроку из строки перед появлениям N
вхождений
разделителя. Если N
положителен, то возвращается
все, что находится слева от последнего разделителя
(считая слева). Если N
отрицателен, то возвращается
все, что находится справа от последнего разделителя
(считая справа).
SELECT SUBSTRING_INDEX(поле, разделитель, количество_разделителей) FROM `имя_таблицы`; -- возможно применение операторов
В данном примере вернется подстрока перед
первым вхождением разделителя '-'
:
SELECT *, SUBSTRING_INDEX(text, '-', 1) as text FROM `texts`;
В данном примере вернется подстрока перед
вторым вхождением разделителя '-'
:
SELECT *, SUBSTRING_INDEX(text, '-', 2) as text FROM `texts`;
В данном примере вернется подстрока перед
третьим вхождением разделителя '-'
:
SELECT *, SUBSTRING_INDEX(text, '-', 3) as text FROM `texts`;
В данном примере вернется подстрока перед
первым с конца вхождением разделителя '-'
:
SELECT *, SUBSTRING_INDEX(text, '-', -1) as text FROM `texts`;
В данном примере вернется подстрока перед
вторым с конца вхождением разделителя '-'
:
SELECT *, SUBSTRING_INDEX(text, '-', -2) as text FROM `texts`;
В данном примере вернется подстрока перед
третьим с конца вхождением разделителя '-'
:
SELECT *, SUBSTRING_INDEX(text, '-', -3) as text FROM `texts`;