Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

REGEXP_REPLACE - remove vírgulas da string SOMENTE se estiver entre ()


Isso funcionará para um comprimento constante de argumentos entre colchetes.
REGEXP_REPLACE(t.col1, '(\(.*?),(.*?),(.*?\))', '\1\2\3') new_col

atualização inspirada no comentário de @Kobi:
esta expressão regular remove o 1º, opcional 2º e opcional 3º , entre ()
pode ser estendido até 9 (tenho um livro afirmando \1 ... \500 deve ser possível, mas apenas \1 ... \9 funcionou)
REGEXP_REPLACE(t.col1, '\(([^,]*),([^,]*),?([^,]*),?([^,]*)\)', '(\1\2\3\4)') new_col