Oracle
 sql >> база данни >  >> RDS >> Oracle

елиминиране на специални символи на регулярен израз

select '11dd$%[email protected]' as input, regexp_replace('11dd$%[email protected]', '[^[:alnum:]]') as output
from   dual
;

INPUT         OUTPUT 
------------  --------
11dd$%[email protected]  11dde11h

[:alnum:] е стенограма за всички букви (стандартни ASCII букви, малки и главни букви) и всички цифри. [^ ... ] означава всичко ОСВЕН ... . Така че това ще замени всичко ОСВЕН букви и цифри с... нищо (тъй като не сме дали трети аргумент на REGEXP_REPLACE).

РЕДАКТИРАНЕ :ОП добави втора част към въпроса.

Ако заданието е да премахнете САМО всички буквено-цифрови знаци и да запазите всичко останало, просто премахнете ^ от регулярния израз.

select '11dd$%[email protected]' as input, regexp_replace('11dd$%[email protected]', '[[:alnum:]]') as output
from   dual
;

INPUT         OUTPUT
------------  ------
11dd$%[email protected]  $%[email protected]



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Каква е разликата между PLSQL Bind променливите и хост променливите

  2. Сравнението на дати връща необичаен резултат - SQL Oracle

  3. 12c Автоматично попълване на колона със стойност на последователността

  4. Предоставяне на избор на всички таблици, собственост на конкретен потребител

  5. SQL превключване от декодиране към регистър