MySQL REGEXP_SUBSTR

В базе есть строки такого вида:

172653_preview_DSC04138_jpg62d70852f2d2944ac82e1f582523fd04_extjpg

Мне надо выделить первые цифры до _ : 172653
Количество цифр может быть разным Я написал такой запрос (рабочий)

update jino_pereezd.smf_aeva_files_scan
set file_name_id =
        left(
                REGEXP_SUBSTR(file_name, '[0-9]*\_'),
                length(REGEXP_SUBSTR(file_name, '[0-9]*\_')) - 1
            );

Вопрос: на мой вкус вышеприведенный запрос выглядит как то неизящно. Можно ли тот же результат получить более простым способом?


Ответы (1 шт):

Автор решения: Alex R.

Упростить можно использовав replace.

REPLACE(REGEXP_SUBSTR(file_name, '^(\d*)_'), '_', '')

Чтобы не попали другие цифры в строке, я привязался к началу строки ^.

Выражение в скобках (\d*) означает подгруппу, обычно к ним можно обращаться по номеру. Но насколько я понял в mysql такой возможности не предусмотрено.

→ Ссылка