sql >> Databasteknik >  >> RDS >> Oracle

Hur kan jag byta ut parenteser till bindestreck i Oracle REGEXP_REPLACE-funktionen?

För att ersätta symboler, använd ÖVERSÄTT funktion, den är mindre processorkrävande än reguljära uttrycksfunktioner:

SQL> SELECT translate ('(<FIO>)', '()[]', '----') replaced FROM dual;

REPLACED
--------
-<FIO>-

Reguljära uttryck är mer mångsidiga och kan göra mer komplexa saker men är dyrare. I det här fallet sker ersättning av ett tecken med ett annat mer effektivt av en specialiserad funktion. Om du verkligen vill använda reguljära uttryck kan du använda REGEXP_REPLACE :

SQL> SELECT regexp_replace ('[(<FIO>)]', '[]()[]', '-', 1, 0) reg FROM dual;

REG
---------
--<FIO>--

Uppdatering:Om du bara vill ersätta den första symbolen, fungerar inte översättning. Använd istället:

SQL> SELECT regexp_replace ('[(<FIO>)]', '[]()[]', '-', 1, 1) reg FROM dual;

REG
---------
-(<FIO>)]



  1. Minimalt exempel på användning av select... för uppdatering för att isolera rader

  2. värd 'localhost' får inte ansluta till denna MySQL-server (#1130)

  3. Enkel MySQL-frågefråga

  4. Hur binar man godtyckligt i MySQL?