Maison > base de données > tutoriel mysql > Correspondance de chaînes PostgreSQL : LIKE vs. ~ pour des requêtes d'expressions régulières efficaces ?

Correspondance de chaînes PostgreSQL : LIKE vs. ~ pour des requêtes d'expressions régulières efficaces ?

Linda Hamilton
Libérer: 2024-12-24 17:34:17
original
554 Les gens l'ont consulté

PostgreSQL String Matching:  LIKE vs. ~ for Efficient Regular Expression Queries?

Expressions régulières dans la clause LIKE de PostgreSQL : utilisation de l'opérateur LIKE vs. ~

Dans PostgreSQL, vous pouvez utiliser des expressions régulières pour rechercher des modèles spécifiques au sein des données. Cependant, si vous rencontrez des problèmes avec vos expressions, il est essentiel d'en comprendre les nuances et les limites.

Le défi : le troisième caractère ne correspond pas

Considérez la requête suivante :

SELECT *
FROM table
WHERE value LIKE '00[1-9]%'
-- (third character should not be 0)
Copier après la connexion

Malgré son intention d'exclure toute valeur avec un troisième caractère '0', cette requête ne correspondra pas à ce critère. Au lieu de cela, il correspond à n'importe quelle valeur commençant par « 00 ».

La solution : utiliser l'opérateur ~

Pour utiliser efficacement les expressions entre crochets, nous devons utiliser l'opérateur d'expression régulière ~:

SELECT *
FROM tbl
WHERE value ~ '^00[^0]'
Copier après la connexion

^ ... désigne le début de la chaîne, garantissant que le motif correspond uniquement au début.
1 ... représente une classe de caractères qui correspond à tout sauf « 0 ».

Une approche optimisée

Pour des performances optimales, envisagez de diviser la requête en deux expressions LIKE :

SELECT *
FROM tbl
WHERE value LIKE '00%'       -- starting with '00'
AND value NOT LIKE '000%'  -- third character is not '0'
Copier après la connexion

LIKE est moins puissant que les expressions régulières mais généralement plus rapides. En limitant les candidats avec l'expression économique LIKE, nous améliorons la vitesse globale des requêtes.

De plus, il est crucial d'utiliser des expressions ancrées à gauche comme la valeur LIKE '00%' car elles peuvent exploiter les index dans PostgreSQL. Ceci est particulièrement avantageux pour les grandes tables, tandis que l'expression régulière plus complexe peut ne pas prendre en charge l'indexation.


    Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

    source:php.cn
    Déclaration de ce site Web
    Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
    Derniers articles par auteur
    Tutoriels populaires
    Plus>
    Derniers téléchargements
    Plus>
    effets Web
    Code source du site Web
    Matériel du site Web
    Modèle frontal