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]'
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!