Функции Oracle REGEX - PullRequest
       1

Функции Oracle REGEX

2 голосов
/ 30 сентября 2011

Я работаю на Oracle 10gR2.

Я работаю над столбцом, в котором хранится имя пользователя. Допустим, что одним из значений в этом столбце является «Анкур». Я хочу получить все записи, где имя пользователя - это объединенная строка «Ankur», за которой следуют некоторые числовые цифры, такие как «Ankur1», «Ankur2», «Ankur345» и так далее. Я не хочу получать записи со значениями, такими как «Ankurab1» - это что-то, что является конкатенацией некоторых символов в моей входной строке.

Я пытался использовать функции REGEX для достижения желаемого результата, но не смог.

Я пытался:

SELECT 1 FROM dual WHERE regexp_like ('Ankur123', '^Ankur[:digit:]$');

Может ли кто-нибудь помочь мне здесь?

Ответы [ 2 ]

7 голосов
/ 30 сентября 2011

Oracle использует POSIX ERE (которые не поддерживают обычную \d стенографию), поэтому вы можете использовать

^Ankur[0-9]+$

Ваша версия тоже почти сработала бы:1007 *

^Ankur[[:digit:]]+$

Один набор [...] для класса символов и один для подмножества [:digit:].И, конечно, +, чтобы разрешить более одной цифры.

3 голосов
/ 30 сентября 2011

Вы были близки

Вместо regexp_like ('Ankur123', '^Ankur[[:digit:]]+$').

Обратите внимание на [[ вместо одного [ и + перед $.

Без + регулярное выражение совпадает только с одной цифрой после строки Ankur .

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