Maison > base de données > tutoriel mysql > Comment les expressions régulières peuvent-elles améliorer la correspondance de modèles dans la clause LIKE de PostgreSQL ?

Comment les expressions régulières peuvent-elles améliorer la correspondance de modèles dans la clause LIKE de PostgreSQL ?

Linda Hamilton
Libérer: 2024-12-20 14:44:12
original
625 Les gens l'ont consulté

How Can Regular Expressions Improve Pattern Matching in PostgreSQL's LIKE Clause?

Expressions régulières dans la clause LIKE de PostgreSQL

Dans PostgreSQL, la clause LIKE est couramment utilisée pour la correspondance de modèles dans les comparaisons de chaînes. Cependant, des expressions régulières peuvent également être utilisées pour améliorer la flexibilité de la clause LIKE. Examinons un scénario courant dans lequel l'utilisation d'expressions régulières peut s'avérer bénéfique.

Le problème :

Considérez l'extrait de requête suivant :

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

Cette requête vise à récupérer les lignes dont la colonne de valeur commence par « 00 » suivi d'un chiffre entre 1 et 9 (mais pas 0), suivi d'un nombre quelconque. de personnages. Cependant, la requête ne parvient pas à correspondre à la chaîne prévue « 0090D0DF143A ».

La solution :

Pour résoudre ce problème, l'opérateur d'expression régulière ~ doit être utilisé à la place de l'opérateur LIKE. De plus, l'expression régulière elle-même peut être modifiée pour obtenir le comportement souhaité :

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

Dans cette expression :

  • ^ ... correspond au début de la chaîne
  • 1 ... correspond à tout caractère qui ne l'est pas 0

Bonne pratique :

Alternativement, la requête suivante utilisant plusieurs expressions LIKE est recommandée pour des raisons de clarté et d'optimisation des performances :

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

L'utilisation des clauses LIKE et NOT LIKE garantit l'efficacité en limitant l'ensemble des candidats à l'aide de l'expression LIKE la moins complexe avant d'appliquer l'expression régulière la plus coûteuse. négation.

Notez que les index peuvent être utilisés pour accélérer les requêtes impliquant des expressions régulières simples comme celle de cet exemple. Pour des informations plus détaillées, reportez-vous à la documentation PostgreSQL sur la différence entre LIKE et ~.


    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