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

REGEXP_REPLACE - usuń przecinki z ciągu TYLKO, jeśli są zawarte w znakach ()

To zadziała dla stałej długości argumentów zawartych w nawiasach.

REGEXP_REPLACE(t.col1, '(\(.*?),(.*?),(.*?\))', '\1\2\3') new_col

aktualizacja zainspirowana komentarzem @Kobi:
to wyrażenie regularne usuwa pierwszy, opcjonalny drugi i opcjonalny trzeci , między ()
może być rozszerzony do 9 (mam książkę stwierdzenie \1 ... \500 powinno być możliwe, ale zadziałało tylko \1 ... \9)

REGEXP_REPLACE(t.col1, '\(([^,]*),([^,]*),?([^,]*),?([^,]*)\)', '(\1\2\3\4)') new_col


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak należy interpretować Select Distinct aliasRefForMe.field1 From [email protected] aliasRefForMe

  2. Oracle SQL umieszcza wartości kolumny w jednym wierszu

  3. SUBST i INSTR SQL Oracle

  4. Dlaczego ta Oracle DROP COLUMN zmienia domyślną wartość innej kolumny?

  5. Funkcja TRIM() w Oracle