Разделить строки по разделителю в MySQL

Чтобы разделить строку по разделителю в MySQL, вы можете использовать несколько методов:

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

    SELECT SUBSTRING_INDEX('your,string,here', ',', 1);

    В результате будет возвращено слово «ваш».

  2. Функция FIND_IN_SET:
    Функция FIND_IN_SET ищет значение в списке, разделенном запятыми, и возвращает позицию значения. Используя эту функцию, вы можете разделить строку на несколько частей на основе разделителя. Вот пример:

    SELECT SUBSTRING_INDEX('your,string,here', ',', 1) AS part1,
          SUBSTRING_INDEX(SUBSTRING_INDEX('your,string,here', ',', 2), ',', -1) AS part2,
          SUBSTRING_INDEX('your,string,here', ',', -1) AS part3;

    При этом строка «ваш,строка,здесь» будет разделена на три части: «ваш», «строка» и «здесь».

  3. Функция REGEXP_SUBSTR:
    Начиная с MySQL 8.0, вы можете использовать функцию REGEXP_SUBSTR для извлечения подстрок на основе шаблона регулярного выражения. Например, чтобы разделить строку запятой и получить все части, вы можете использовать следующий запрос:

    SELECT REGEXP_SUBSTR('your,string,here', '[^,]+', 1, seq) AS parts
    FROM (
     SELECT 1 + seq.seq_id AS seq
     FROM (
       SELECT 0 AS seq_id UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3
     ) AS seq
    ) AS seq
    WHERE REGEXP_SUBSTR('your,string,here', '[^,]+', 1, seq) IS NOT NULL;

    При этом каждая часть строки будет возвращена как отдельная строка.