2017-09-22 2 views
1

Est-ce que quelqu'un sait quel est l'effet de l'opérateur % sur varchar?PostgreSQL '%' opérateur

Je trouve cette requête dans un projet et ne savent pas vraiment ce qu'il fait:

SELECT * FROM Location l where l.name % :param; 

je supposé qu'il a le même effet que:

SELECT * FROM Location l where l.name LIKE '%:param%' 

Mais je n » ai pas t trouver l'explication sur la documentation de PostgreSQL.

Répondre

4

% est l'opérateur de "similarité", fourni par le additional module pg_trgm.

Il faut text (ou d'autres types de corde) comme opérande gauche et à droite et retourne boolean: true si les deux opérandes sont assez semblables, sinon false. Le seuil est défini avec le paramètre GUC pg_trgm.similarity_threshold.

connexes:

Ne pas confondre avec le modulo operator %. Même symbole, mais l'opérateur mathématique prend numérique comme opérande gauche et droit.

Dans Postgres, les opérateurs sont définis par le nom de l'opérateur (comme %) plus les opérandes gauche et droit. Détails de Gory dans le chapitre du manuel Operator Type Resolution. L'utilisateur occasionnel n'a pas besoin de savoir quoi que ce soit. Typiquement cela fonctionne juste.

connexes:

+0

oh ok ... Je suis en train de faire des tests unitaires sur une base de données en mémoire avec le mode H2 Postgresql. J'ai reproduit la fonction de similarité qui n'est pas supportée nativement par H2 mais je ne sais pas si je pourrais reproduire l'opérateur ... –

+0

@MatthieuSaleta: Suivez [le lien vers le manuel que j'ai fourni] (https: //www.postgresql. org/docs/current/static/pgtrgm.html). Il y a une description de ce qu'il fait exactement. –