Maison >base de données >tutoriel mysql >Comment puis-je interroger efficacement PostgreSQL pour les valeurs commençant par « 00 » et un troisième caractère différent de zéro ?

Comment puis-je interroger efficacement PostgreSQL pour les valeurs commençant par « 00 » et un troisième caractère différent de zéro ?

DDD
DDDoriginal
2024-12-26 17:58:09472parcourir

How Can I Efficiently Query PostgreSQL for Values Starting with

Expression régulière dans la clause LIKE de PostgreSQL

Cette requête cherche à faire correspondre les valeurs commençant par « 00 » et ayant un troisième caractère différent de « 0 » ', comme dans '0090D0DF143A'. Cependant, la requête suivante ne parvient pas à correspondre :

SELECT * FROM table WHERE value LIKE '00[1-9]%'

Pour résoudre ce problème, envisagez d'utiliser l'opérateur d'expression régulière « ~ » avec une expression entre crochets en dehors de la clause LIKE. Cependant, pour des performances optimales, une combinaison de clauses LIKE et NOT LIKE est recommandée :

SELECT *
FROM   tbl
WHERE  value LIKE '00%'
AND    value NOT LIKE '000%'

La clause LIKE réduit efficacement les correspondances potentielles avec une expression ancrée à gauche, tandis que la clause NOT LIKE affine davantage la résultats. Postgres peut utiliser des index pour de telles expressions, ce qui accélère l'exécution des requêtes.

De plus, il est crucial d'ancrer le modèle au début de la chaîne en utilisant '^' dans les expressions régulières et d'utiliser des expressions entre crochets ' 1' pour correspondre à n'importe quel caractère autre que '0'.


    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!

    Déclaration:
    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