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

Supprimer/remplacer les caractères spéciaux dans les valeurs de colonne ?

Vous pouvez utiliser le regexp_replace fonction pour ne laisser que les chiffres et les lettres, comme ceci :

update mytable
   set myfield = regexp_replace(myfield, '[^\w]+','');

Ce qui signifie que tout ce qui n'est pas un chiffre ou une lettre ou un soulignement sera remplacé par rien (cela inclut -, space, dot, comma , etc.).

Si vous souhaitez également inclure le _ à remplacer (\w le laissera) vous pouvez changer le regex en [^\w]+|_ .

Ou si vous voulez être strict avec les caractères qui doivent être supprimés, vous utilisez :[- ]+ dans ce cas ici un tiret et un espace.

Aussi comme suggéré par Luiz Signorelly vous pouvez utiliser pour remplacer toutes les occurrences :

    update mytable
       set myfield = regexp_replace(myfield, '[^\w]+','','g');