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 такой возможности не предусмотрено.