Oracle
 sql >> Baza danych >  >> RDS >> Oracle

eliminacja znaków specjalnych w wyrażeniach regularnych

select '11dd$%example@sqldat.com' as input, regexp_replace('11dd$%example@sqldat.com', '[^[:alnum:]]') as output
from   dual
;

INPUT         OUTPUT 
------------  --------
11dd$%example@sqldat.com  11dde11h

[:alnum:] jest skrótem dla wszystkich liter (standardowe litery ASCII, małe i duże) oraz wszystkich cyfr. [^ ... ] oznacza wszystko Z WYJĄTKIEM ... . Zastąpi to wszystko, Z WYJĄTKIEM liter i cyfr, na... nic (ponieważ nie podaliśmy trzeciego argumentu funkcji REGEXP_REPLACE).

EDYTUJ :OP dodał drugą część do pytania.

Jeśli zadaniem jest usunięcie TYLKO wszystkich znaków alfanumerycznych i zachowanie wszystkiego innego, po prostu usuń ^ z wyrażenia regularnego.

select '11dd$%example@sqldat.com' as input, regexp_replace('11dd$%example@sqldat.com', '[[:alnum:]]') as output
from   dual
;

INPUT         OUTPUT
------------  ------
11dd$%example@sqldat.com  $%example@sqldat.com



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. sprawdź poprawną datę, która jest zadeklarowana w varchar2

  2. Ograniczenie czeku Oracle

  3. Nadawanie uprawnień użytkownikom na innym schemacie

  4. praca z Fluent NHibernate i identyfikatorami guid

  5. jak wybrać listę 10 000 unikalnych identyfikatorów z dual w Oracle SQL