94 votes

Utilisation de REGEX dans WHERE in Postgres

J'ai actuellement la requête suivante :

select regexp_matches(name, 'foo') from table;

Comment puis-je réécrire ceci de sorte que la regex se trouve dans l'où comme ce qui suit (ne fonctionne pas) :

select * from table where regexp_matches(name, 'foo');

Le message d'erreur actuel est : ERROR : argument of WHERE must be type boolean, not type text[] SQL state : 42804 Character : 29

167voto

araqnid Points 33350

Écrire à la place :

select * from table where name ~ 'foo'

L'opérateur '~' produit un résultat booléen pour savoir si la valeur REGEX correspond ou non plutôt que d'extraire les sous-groupes correspondants.

10voto

Maxim Sloyko Points 4091

Il suffit d'utiliser l'opérateur match :

select * from table where name ~ 'foo';

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X