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

Groupe de capture d'expressions régulières PostgreSQL dans select

Si vous essayez de capturer la correspondance d'expression régulière résultant de l'expression, alors substring ferait l'affaire :

select substring ('I have a dog', 'd[aeiou]g')

Renverrait n'importe quelle correspondance, dans ce cas "chien".

Je pense que le chaînon manquant de ce que vous essayiez ci-dessus était que vous deviez mettre l'expression que vous souhaitez capturer entre parenthèses. regexp_matches fonctionnerait dans ce cas (si vous aviez inclus des parenthèses autour de l'expression que vous vouliez capturer), mais renverrait un tableau de texte avec chaque correspondance. S'il s'agit d'une correspondance, substring est plutôt pratique.

Donc, pour revenir à votre exemple, si vous essayez de renvoyer des stuff si et seulement si c'est en début de colonne :

select substring (column, '^(stuff)')

ou

select (regexp_matches (column, '^(stuff)'))[1]