Oracle
 sql >> Base de données >  >> RDS >> Oracle

REGEXP_REPLACE - supprime les virgules de la chaîne UNIQUEMENT si elles sont entre ()

Cela fonctionnera pour une longueur constante d'arguments avec entre parenthèses.

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

mise à jour inspirée du commentaire de @Kobi :
cette expression régulière supprime le 1er, le 2e facultatif et le 3e facultatif , entre ()
il peut être étendu jusqu'à 9 (j'ai un livre indiquer \1 ... \500 devrait être possible mais seulement \1 ... \9 a fonctionné)

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