REGEXP_SUBSTR вернуть все совпадения (mariaDB) - PullRequest
0 голосов
/ 04 октября 2018

Мне нужно получить все совпадения регулярного выражения в текстовом поле в таблице MariaDB .Насколько я знаю, REGEXP_SUBSTR - это способ получить значение совпадения регулярного выражения в текстовом поле, но он всегда возвращается после первого совпадения, и я хотел бы получить все совпадения .

Есть ли способ сделать это в MariaDB?

Пример содержимого текстового поля:

@Generation {
// 1
True =>
    `CP?:24658` <= `CPV?:24658=57186`;
//`CP?23432:24658` <= `CPV?:24658=57186`

// 2
`CP?:24658` <> `CPV?:24658=57178` =>
    `CP?:24656` <> `CPV?:24656=57169`;

И выражение выбора, которое я сейчас использую:

, выберите REGEXP_SUBSTR (текстовое поле, 'CP\\?(?:\\d*:)*24658') как my_match из таблицы, где id = 1243;

, который на данный момент возвращает только первый матч:

  • CP?:24658

И я хотел бы, чтобы он возвращал все совпадения:

  • CP?:24658
  • CP?23432:24658
  • CP?:24658

1 Ответ

0 голосов
/ 14 октября 2018
  1. Используйте просто REGEXP, чтобы найти интересные строки.Поместите их в временную таблицу
  2. Повторно обработайте временную таблицу - но удалите SUBSTR, как вы ее используете.

Что вы будете делать с каждым подстроком?Может быть, это поможет нам разработать лучший подход.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...