PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Remover/substituir caracteres especiais em valores de coluna?


Você pode usar o regexp_replace função à esquerda apenas os dígitos e letras, assim:
update mytable
   set myfield = regexp_replace(myfield, '[^\w]+','');

O que significa que tudo o que não for um dígito ou uma letra ou um sublinhado será substituído por nada (isso inclui -, space, dot, comma , etc).

Se você quiser incluir também o _ a ser substituído (\w vai deixá-lo) você pode alterar o regex para [^\w]+|_ .

Ou se você quiser ser rigoroso com os caracteres que devem ser removidos, use:[- ]+ neste caso aqui um traço e um espaço.

Também conforme sugerido por Luiz Signorelly você pode usar para substituir todas as ocorrências:
    update mytable
       set myfield = regexp_replace(myfield, '[^\w]+','','g');