MySql - RegEx извлекает переменную последовательность чисел - PullRequest
0 голосов
/ 17 января 2019

У меня есть эта таблица:

DROP TABLE IF EXISTS test2_sim;
CREATE TABLE test2_sim (
texto VARCHAR(1024) NOT NULL
);

с этими записями:

INSERT INTO test2_sim (texto) VALUES ('/A/posts/2088973241125818');
INSERT INTO test2_sim (texto) VALUES ('/A/posts/2088973241125818?commen');
INSERT INTO test2_sim (texto) VALUES ('/B/posts/10155759853867175?__xts_');
INSERT INTO test2_sim (texto) VALUES ('/C/posts/595673157521288');
INSERT INTO test2_sim (texto) VALUES ('/D/posts/365108183946?__xts__%5B0%5D=68.ARCs');
INSERT INTO test2_sim (texto) VALUES ('/E/posts/1028007200735853?__xts__%5B0%5');

Я пытаюсь извлечь для каждой записи переменную последовательность чисел, например

Record1 > 2088973241125818
Record2 > 2088973241125818
Record3 > 10155759853867175

Можно ли использовать команду REGEX в операторах выбора? как:

Select *, REGEX(texto,'^[specific_patterns]' AS regex_out from test2_sim;

Предположим, допустимая последовательность чисел состоит из последовательных цифр> 10.

Большое спасибо Regs

Ответы [ 2 ]

0 голосов
/ 17 января 2019

Не нужно использовать REGEX. Как насчет того, чтобы использовать CONVERT и SUBSTRING_INDEX?

SELECT CONVERT(SUBSTRING_INDEX(texto, '/', -1), UNSIGNED INTEGER) as seq_num from test2_sim;

См. Скрипку: http://www.sqlfiddle.com/#!9/e914d/12

0 голосов
/ 17 января 2019

Этот запрос показывает, как «разбирать» число без использования REGEX.

Запрос

SELECT 
 *
 , CAST(
     REVERSE(
        SUBSTRING_INDEX(
            REVERSE(texto)
          , '/'
          , 1
        )
     ) AS UNSIGNED)
FROM 
 test2_sim

Результат

| texto                                        | CAST(REVERSE(SUBSTRING_INDEX(REVERSE(texto), '/', 1)) AS UNSIGNED) |
| -------------------------------------------- | ------------------------------------------------------------------ |
| /A/posts/2088973241125818                    | 2088973241125818                                                   |
| /A/posts/2088973241125818?commen             | 2088973241125818                                                   |
| /B/posts/10155759853867175?__xts_            | 10155759853867175                                                  |
| /C/posts/595673157521288                     | 595673157521288                                                    |
| /D/posts/365108183946?__xts__%5B0%5D=68.ARCs | 365108183946                                                       |
| /E/posts/1028007200735853?__xts__%5B0%5      | 1028007200735853                                                   |

см. демо

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