Главная > SQL > Регулярные выражения – оставить только цифры или символы


Регулярные выражения – оставить только цифры или символы

Пример использования регулярного выражения (regexp_replace)
– оставить только символы
– оставить только цифры

with t as (select '#2 apps(0_-ORACLE+*.ru_ )ПРИ13мер' str from dual)
select str
     , regexp_replace(str,'[^[[:alpha:]]]*') as only_char
     , regexp_replace(str,'[^[[:digit:]]]*') as only_number
from t
/

STR                                 ONLY_CHAR                 ONLY_NUMBER
---------------------------------   ------------------------  --------------------
#2 apps(0_-ORACLE+*.ru_ )ПРИ13мер   appsORACLEruПРИмер        2013

Похожие записи:

  1. 1
    17 Сентябрь 2013 в 15:56 | #1

    а что * в начале строки означает?

  2. 17 Сентябрь 2013 в 17:45 | #2

    @1
    Это затесалось лишнее, убрал. Спасибо

  3. 1
    18 Сентябрь 2013 в 16:09 | #3

    да и вообще, можно так, например, написать
    WITH t AS
    (SELECT ‘#2 apps(0_-ORACLE+*.ru_ )ПРИ13мер’ Str FROM Dual)
    SELECT Str,
    Regexp_Replace(Str, ‘\d’) AS Only_Char,
    Regexp_Replace(Str, ‘\D’) AS Only_Number
    FROM t;

  4. 19 Сентябрь 2013 в 10:19 | #4

    @1
    Regexp_Replace(Str, ‘\d’) возвращает лишнее

  5. 1
    19 Сентябрь 2013 в 17:03 | #5
    WITH t AS
     (SELECT '#2 apps(0_-ORACLE+*.ru_ )ПРИ13мер' Str FROM Dual)
    SELECT Str,
           Regexp_Replace(Str, '[[:digit:]]') AS Only_Char,
           Regexp_Replace(Str, '[^[:digit:]]') AS Only_Number
      FROM t;
  6. 1
    19 Сентябрь 2013 в 17:05 | #6
    WITH t AS
     (SELECT '#2 apps(0_-ORACLE+*.ru_ )ПРИ13мер' Str FROM Dual)
    SELECT Str,
           Regexp_Replace(Str, '[^[:alpha:]]') AS Only_Char,
           Regexp_Replace(Str, '[^[:digit:]]') AS Only_Number
      FROM t
  1. Пока что нет уведомлений.