web-dev-qa-db-fra.com

Utiliser regex dans WHERE dans Postgres

J'ai actuellement la requête suivante:

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

Comment puis-je réécrire cela afin que l'expression régulière soit dans le cas où comme suit (ne fonctionne pas):

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

Le message d'erreur actuel est: ERREUR: l'argument de WHERE doit être de type booléen, pas de texte [] État SQL: 42804 Caractère: 29

66
David

Écrivez à la place:

select * from table where name ~ 'foo'

L'opérateur "~" produit un résultat booléen pour savoir si l'expression régulière correspond ou non plutôt que d'extraire les sous-groupes correspondants.

119
araqnid

Utilisez simplement l'opérateur de correspondance ici:

select * from table where name ~ 'foo';
41
Maxim Sloyko