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
Libérer: 2024-12-25 06:40:26
original
719 Les gens l'ont consulté

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]%'
Copier après la connexion

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]'
Copier après la connexion
  • ^ : 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'
Copier après la connexion

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!

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