Извлечь OrderID из текста MySql - PullRequest
0 голосов
/ 16 октября 2018

Я хочу извлечь число из этого числа 306-3584295-9664328 из текстового столбца.Формат всегда один и тот же, но перед номером может стоять и текст после этого номера.Например,

Blblblbla xxx-xxxxxxx-xxxxxxx Blblalblala

Я нашел регулярное выражение для этого \ w \ d {2} -? \ D {7} -? \ D {7}, но я не могу использовать его с mysql.

Чего я хочу добиться - это извлечь это число из одного столбца и добавить его в новый столбец.Просто номер.

Все, что я пробовал до сих пор, не увенчалось успехом.К сожалению, я все еще новичок и надеюсь, что вы сможете мне помочь.

Пока, Кристиан

1 Ответ

0 голосов
/ 16 октября 2018

Используйте функцию REGEXP_REPLACE() для замены нечислового значения - это будет работать в версии MySQL 8+ / MariaDB

DEMO

SELECT REGEXP_REPLACE ('Blblblbla 234-4565979-4564646 Blblalblala','[a-zA-Z]+', '') as content

Для вставки втаблицу, которую вы можете использовать ниже код

insert into tablename(textval,orderid) 
   select 'Blblblbla 234-4565979-4564646 Blblalblala' as textval,REGEXP_REPLACE ('Blblblbla 234-4565979-4564646 Blblalblala','[a-zA-Z]+', '') as orderid

ИЛИ в случае вашей таблицы - просто замените имя таблицы и столбца на желаемую таблицу и имя столбца

insert into testtable(textval,orderid) 
       select colname as textval,REGEXP_REPLACE (colname,'[a-zA-Z]+', '') as orderid from tablename
...