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

PostgreSQL regexp_replace avec l'expression correspondante

OK, j'ai trouvé la réponse. Apparemment, je dois double-échapper la barre oblique inverse dans le remplacement. Aussi, j'ai besoin de E -prefix et double-échappement antislash dans le modèle de recherche sur les anciennes versions de postgres (8.3 dans mon cas). Le code final ressemble à ceci :

regexp_replace('abc [def]', E'([\\[\\]\\(\\)\\\\\?\\|_%])', E'\\\\\\1', 'g')

Oui, ça a l'air horrible, mais ça marche :)