Извлечение числа из двух символов

#sql #oracle

#sql #Oracle

Вопрос:

У меня есть следующий пример данных в столбце;

 SPEED_TO_80M_20M_FTTCWBC
SPEED_TO_160M_30M_FTTCFAST
SPEED_TO_24M_WBC
 

Я хочу извлечь только первые числа (80, 160, 24) как числовые, используя Oracle SQL. Есть идеи?

Спасибо

Комментарии:

1. Вы также должны объяснить правило, а не рассматривать его как «очевидное». Ищете ли вы подстроку сразу после жестко запрограммированной подстроки 'SPEED_TO_' и прямо перед следующим подчеркиванием (или концом строки), и всегда ли этот токен будет числом, за которым следует M , и вы должны возвращать числовую часть? Если ответ «нет» на любой из этих вопросов, вы должны уточнить.

2. Также — что вы показали в качестве входных данных (и в качестве выходных данных)? У вас есть одна длинная строка или в вашем примере три разные строки (в разных строках входной таблицы)?

Ответ №1:

Используйте регулярное выражение:

 Select regexp_substr(your_column, '[0-9] ') 
  From your_table;
 

Ответ №2:

Я думаю, вы просите что-то подобное, но трудно понять, каковы ваши правила. Эти запросы по существу возвращают ответ, который вы ищете. Вам просто нужно будет заменить строку на реальные имена столбцов и заменить dual на реальное имя таблицы.

  select regexp_substr('SPEED_TO_80M_20M_FTTCWBC', '.*[[:digit:]] ')from dual;
select regexp_substr('SPEED_TO_160M_30M_FTTCFAST', '.*[[:digit:]] ') from dual;
select regexp_substr('SPEED_TO_24M_WBC', '.*[[:digit:]] ') from dual;