Как разделить строку в MySQL

GuDron

dumpz.ws
Admin
Регистрация
28 Янв 2020
Сообщения
7,690
Реакции
1,445
Credits
24,922
В MySQL существует множество встроенных функций для выполнения различных типов операций со строковыми данными. Иногда требуется разделить строковые данные на основе любого разделителя при выполнении запроса SELECT. Функция SUBSTRING_INDEX() используется для разделения строковых данных, полученных запросом, на основе определенного разделителя. В этой статье обсуждается способ использования этой функции в запросе SELECT .

Синтаксис SUBSTRING_INDEX():​

Функция SUBSTRING_INDEX() принимает три аргумента и возвращает значение подстроки. Синтаксис функции SUBSTRING_INDEX() представлен ниже:
Код:
string SUBSTRING_INDEX(string, delimiter, count);
  • Первый аргумент — это строковое значение, которое будет разделено.
  • Второй аргумент — это разделитель, который будет использоваться для разделения строкового значения.
  • Третий аргумент определяет количество вхождений разделителя. Оно может быть положительным или отрицательным. Если значение третьего аргумента положительное, то значение подстроки будет возвращено слева. Если значение третьего аргумента отрицательное, значение подстроки будет возвращено справа.

Разделить строку с помощью функции SUBSTRING_INDEX():​

В этой части статьи показаны различные варианты использования функции SUBSTRING_INDEX().

Пример 1: Разделить строку на основе положительного значения счетчика​

В этой части руководства показаны четыре варианта использования функции SUBSTRING_INDEX() с положительным значением счетчика и другим разделителем.

Запустите следующую инструкцию SELECT, которая использует функцию SUBSTRING_INDEX() с положительным значением счетчика, 1, и пробелом в качестве разделителя. Основная строка «Welcome to AndreyEx» состоит из трех слов. Таким образом, в выводе будет напечатано первое слово строки.
Код:
SELECT SUBSTRING_INDEX('Welcome to AndreyEx', ' ', 1);
Запустите следующую инструкцию SELECT, которая использует функцию SUBSTRING_INDEX() с положительным значением счетчика, 2, и символом «o» в качестве разделителя. Основная строка «Welcome to AndreyEx» содержит два раза символ «o». Второй раз «o» появилось во втором слове «to». Таким образом, вывод будет «Welcome to».
Код:
SELECT SUBSTRING_INDEX('Welcome to AndreyEx', 'o', 2);
Выполните следующую инструкцию SELECT, которая использует функцию SUBSTRING_INDEX() с положительным значением счетчика, 1, и строкой ‘to’ в качестве разделителя. Основная строка «Welcome to AndreyEx» содержит строку «to» один раз. Таким образом, вывод будет «Welcome».
Код:
SELECT SUBSTRING_INDEX('Welcome to AndreyEx', 'to', 1);
Выполните следующую инструкцию SELECT, которая использует функцию SUBSTRING_INDEX() с положительным значением счетчика, 3, и строкой ‘to’ в качестве разделителя. Основная строка «Welcome to AndreyEx» содержит строку «to» только один раз. Таким образом, основная строка будет возвращена на выходе.
Код:
SELECT SUBSTRING_INDEX('Welcome to AndreyEx', 'to', 3);

Пример 2: Разделить строку на основе отрицательного значения счетчика​

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

Выполните следующую инструкцию SELECT, в которой используется функция SUBSTRING_INDEX() с отрицательным значением счетчика, -1, и пробелом в качестве разделителя. Основная строка «Welcome to AndreyEx» состоит из трех слов. Итак, последнее слово строки будет напечатано в выводе для отрицательного значения:
Код:
SELECT SUBSTRING_INDEX('Welcome to AndreyEx', ' ', -1);
Выполните следующую инструкцию SELECT, которая использует функцию SUBSTRING_INDEX() с отрицательным значением счетчика, -2, и символом «e» в качестве разделителя. Основная строка «Welcome to AndreyEx» содержит символ «e» только один раз. Таким образом, вывод будет «lcome toAndreyEx »:
Код:
SELECT SUBSTRING_INDEX('Welcome to AndreyEx', 'e', -2);
Выполните следующую инструкцию SELECT, в которой используется функция SUBSTRING_INDEX() с отрицательным значением счетчика, -2, и строкой «in» в качестве разделителя. Основная строка «Welcome to AndreyEx» содержит два раза строку «yE». Таким образом, в выводе будет возвращена подстрока ‘ Andrex’.
Код:
SELECT SUBSTRING_INDEX('Welcome to AndreyEx', 'in', -2);

Пример 3: Разделить строковое значение таблицы​

Вы должны создать таблицу с данными в базе данных MySQL, чтобы проверить функцию SUBSTRING_INDEX() для данных таблицы.
Выполните следующий запрос, чтобы создать базу данных с именем test_db:
Код:
CREATE DATABASE test_db;
Выполните следующую инструкцию, чтобы использовать базу данных test_db в качестве текущей базы данных:
Код:
USE test_db;
Выполните следующий запрос, чтобы создать таблицу клиентов с четырьмя полями:
Код:
CREATE TABLE customers(
id INT NOT NULL PRIMARY KEY,
name VARCHAR(30) NOT NULL,
email VARCHAR(50),
contact_no VARCHAR(15));
Выполните следующий запрос, чтобы вставить три записи в таблицу клиентов :
Код:
INSERT INTO `customers` (`id`, `name`, `email`, `contact_no`) VALUES
('001', 'Andrey Ex', '[email protected]', '+8 000 00 00 000'),
('002', 'Maxs Destroyer', 'Max***@yandex.com', '+8 000 00 00 000'),
('003', 'Alex Annihilator', 'Alex***@yandex.com', '+8 000 00 00 000');
Выполните следующую команду, чтобы прочитать все записи таблицы клиентов:
Код:
SELECT * FROM customers;
Поле имени содержит имя и фамилию. Поле contact_no содержит номер мобильного телефона с кодом страны. Имя и номер мобильного телефона без кода страны можно прочитать из таблицы с помощью функции SUBSTRING_INDEX(). В следующем запросе SELECT первое имя будет получено с использованием разделителя пробела и 1 в качестве значения счетчика в функции SUBSTRING_INDEX(), а номер мобильного телефона без кода страны будет получен с использованием кода страны в качестве разделителя и -1 в качестве значения счетчика в функции SUBSTRING_INDEX():
Код:
SELECT
id, SUBSTRING_INDEX(name,' ',1) AS `First Name`, email, SUBSTRING_INDEX(contact_no,'+88',-1) AS Phone
FROM customers;

Вывод:​

Различные варианты использования функции SUBSTRING_INDEX() с использованием разных значений аргументов обсуждались в этом руководстве с использованием нескольких примеров. Мы надеемся, что примеры в этой статье помогут пользователям MySQL узнать об использовании функции SUBSTRING_INDEX() и правильно применить ее в запросе SELECT.