Dans une colonne de table dans une chaîne, nous pouvons avoir des nombres/caractères spéciaux/espaces blancs . Je veux remplacer des chiffres/caractères spéciaux/espaces blancs par des caractères vides, je vois qu'il existe une fonction nommée regexp_replace
mais comment utiliser de manière peu conviviale help avaialble par exemple, je veux utiliser la chaîne suivante.
String = 'abc$wanto&toremove#special~chars'
Je veux supprimer tous les caractères spéciaux et les chiffres de la chaîne ci-dessus. Permettre uniquement a-z
et A-Z
. Le reste des caractères doit être remplacé par ''
. Comment procéder?
select regexp_replace('abc$wanto&toremove#special~chars', '[^a-zA-Z]', '', 'g')
Pour moi, ce qui suit a fonctionné.
regexp_replace(code, '[^a-zA-Z0-9]+', '','g')
Comme il ajoute un filtre global, il répète l'expression régulière pour toute la chaîne.
Exemple,
SELECT regexp_replace('Well- This Did-Not work&*($%%)_', '[^a-zA-Z0-9]+', '')
Retourne: "WellThis n'a pas fonctionné & * ($ %%) _"
SELECT regexp_replace('Well- This Did-Not work&*($%%)_', '[^a-zA-Z0-9]+', '','g')
Renvoie: "WellThisDidNotwork"
Qui a les caractères que nous ne voulons pas enlever.
Pour simplifier les choses:
regexp_replace('abc$wanto&toremove#special~chars', '[^[:alpha:]]')
Si vous voulez remplacer le caractère par le caractère le plus proche, pas spécial, vous pouvez faire quelque chose comme ceci:
select
translate(
lower( name ), ' ''àáâãäéèëêíìïîóòõöôúùüûçÇ', '--aaaaaeeeeiiiiooooouuuucc'
) as new_name,
name
from cities;
Devrait être:
regexp_replace('abc$wanto&toremove#special~chars', '[^a-zA-Z]+', '')