Как извлечь числовую часть поля с помощью функции regex_substr? - PullRequest
0 голосов
/ 09 июля 2019

Мне нужно извлечь числовую часть значений в столбце (varchar), если в значении есть число.

Столбец A имеет значения, такие как ABC, M365, J344, MCT и т. Д.

Я хотел бы проверить все значение из второй позиции, и если это число, я хотел бы извлечь его, например,

а. M365 со 2-й позиции 365 - это число, поэтому я хотел бы вернуть эту подстроку. б. M3AB, со 2-й позиции 3AB не является числом, поэтому я не хотел бы возвращать эту подстроку.

Я пытался regex_substr('M365', '[0-9]', 2), но это не так, как я хочу, и он возвращает только то, что находится во второй позиции, но не всю подстроку.

Ответы [ 2 ]

0 голосов
/ 09 июля 2019

[0-9] ищет только один номер. Вы хотите знать, все ли они числа, поэтому вам нужен оператор «+». Для получения дополнительной информации посетите:

https://www.techonthenet.com/oracle/functions/regexp_substr.php

Следующий код должен работать для вас.

regex_substr('M365', '[0-9]+', 2)
0 голосов
/ 09 июля 2019

Это, кажется, делает то, что вы хотите:

select regexp_substr(substr(x, 2), '^\d+$')

Это начинает сопоставлять шаблон со второй позиции в строке, требуя, чтобы число начиналось там.

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