В MySQL существует множество встроенных функций для выполнения различных типов операций со строковыми данными. Иногда требуется разделить строковые данные на основе любого разделителя при выполнении запроса SELECT. Функция SUBSTRING_INDEX() используется для разделения строковых данных, полученных запросом, на основе определенного разделителя. В этой статье обсуждается способ использования этой функции в запросе SELECT.
Функция SUBSTRING_INDEX() принимает три аргумента и возвращает значение подстроки. Синтаксис функции SUBSTRING_INDEX() представлен ниже:
string SUBSTRING_INDEX(string, delimiter, count);
В этой части статьи показаны различные варианты использования функции SUBSTRING_INDEX().
В этой части руководства показаны четыре варианта использования функции 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('Welcome to AndreyEx', 'to', 1);
Выполните следующую инструкцию SELECT, которая использует функцию SUBSTRING_INDEX() с положительным значением счетчика, 3, и строкой ‘to’ в качестве разделителя. Основная строка «Welcome to AndreyEx» содержит строку «to» только один раз. Таким образом, основная строка будет возвращена на выходе.
SELECT SUBSTRING_INDEX('Welcome to AndreyEx', 'to', 3);
В этой части руководства показаны три варианта использования функции 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);
Вы должны создать таблицу с данными в базе данных 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', 'info@andreyex.ru', '+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.