MySQL REGEX - извлечение данных из строки - PullRequest
0 голосов
/ 10 мая 2018

Я застрял ... У меня есть поле (Описание) в MySQL с очень длинной строкой. В эту строку встроен ссылочный номер, который мне нужно извлечь в другое поле с помощью представления. Строка будет выглядеть примерно так.

LOREM IPSUM DOLOR SIT AMET CONSECTETUR ADIPISCING ELIT INTEGER NEC ODIO XX00000000X LIBERO SED CURSUS ANTE DAPIBUS DIAM SED NISI NULLA QUIS SEM В НИБ ЭЛЕМЕНТУМ ИМПЕРДИЕТ

Мне нужно из этой строки XX00000000X. Он всегда начинается с двух букв, цифр в середине и заканчивается буквой.

У меня следующий запрос:

SELECT 
    Description, 
    SUBSTRING_INDEX (Description, ' ',  (Description REGEXP '[[:upper:]]{1,2}[[:digit:]]+[[:upper:]]$') * -1 ) AS Reference 
FROM db_test.tbl_regex;

Проблема в том, что он собирает справочные данные только в конце поля описания.

1 Ответ

0 голосов
/ 24 мая 2018

REGEXP_SUBSTR() был представлен в MariaDB 10.0.5 и MySQL 8.0.

Это то, что вам нужно, чтобы найти и извлечь XX00000000X.

REGEXP (как вы его использовали)возвращает только true / false.SUBSTRING_INDEX() нужна строка.

Если вы не можете выполнить обновление до одного из них, лучшее, что вы можете сделать, это использовать REGEXP для определения строк, которые имеют XX00000000X, а затем использовать код приложения для его извлечения.

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