Maison >base de données >tutoriel mysql >Comment puis-je faire correspondre efficacement des chaînes commençant par « 00 » et un troisième chiffre différent de zéro dans PostgreSQL ?

Comment puis-je faire correspondre efficacement des chaînes commençant par « 00 » et un troisième chiffre différent de zéro dans PostgreSQL ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-25 06:40:26708parcourir

How Can I Efficiently Match Strings Starting with

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

Votre expression est destinée à faire correspondre des chaînes commençant par « 00 » et suivies d'un chiffre entre 1 et 9, mais à l'exclusion des chaînes dont le troisième caractère est « 0 ». L'expression incorrecte est :

select * from table where value like '00[1-9]%'

Utilisation incorrecte de l'opérateur LIKE :

Les opérateurs d'expression régulière dans PostgreSQL utilisent le tilde (~) au lieu de LIKE. Pour utiliser des expressions entre crochets, vous devez remplacer l'opérateur par ~.

Regex améliorée :

SELECT *
FROM   table
WHERE  value ~ '^00[^0]'
  • ^ : correspond au début de la chaîne

Utilisation alternative LIKE :

Au lieu d'une expression régulière, vous pouvez utiliser l'opérateur LIKE combiné à la négation :

SELECT *
FROM   table
WHERE  value LIKE '00%'       -- Starts with '00'
AND    value NOT LIKE '000%'  -- Excludes third character '0'

Cette approche est souvent plus rapide que les expressions régulières pour les modèles simples.

Optimisation de l'index :

Postgres prend en charge les index pour LIKE ancré à gauche des expressions comme « 00 % ». L'indexation peut améliorer considérablement les performances sur les grandes tables. Les expressions régulières n'utilisent pas toujours des index, il vaut donc la peine d'envisager l'alternative LIKE pour de meilleures opportunités d'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!

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