POSIXopérateurs - Amazon Redshift

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

POSIXopérateurs

Une expression POSIX régulière est une séquence de caractères qui indique un modèle de correspondance. Une chaîne correspond à une expression régulière si elle fait partie du jeu régulier décrit par l’expression régulière.

POSIXles expressions régulières fournissent un moyen de correspondance de modèles plus puissant que SIMILARÀ les opérateurs LIKE et. POSIXles modèles d'expressions régulières peuvent correspondre à n'importe quelle partie d'une chaîne, contrairement SIMILAR à l'opérateur TO, qui renvoie vrai uniquement si son modèle correspond à la chaîne entière.

Note

La mise en correspondance d'expressions régulières à l'aide d'POSIXopérateurs est coûteuse en termes de calcul. Nous vous recommandons de l'utiliser dans la LIKE mesure du possible, en particulier lors du traitement d'un très grand nombre de lignes. Par exemple, les requêtes suivantes sont fonctionnellement identiques, mais celle qui les utilise LIKE s'exécute plusieurs fois plus vite que celle qui utilise une expression régulière :

select count(*) from event where eventname ~ '.*(Ring|Die).*'; select count(*) from event where eventname LIKE '%Ring%' OR eventname LIKE '%Die%';

Syntaxe

expression [ ! ] ~ pattern

Arguments

expression

Expression valide de UTF 8 caractères, telle qu'un nom de colonne.

!

Opérateur de négation. Ne correspond pas à l’expression régulière.

~

Effectuez une correspondance sensible à la casse pour une sous-chaîne d’expression.

Note

~~ est un synonyme pour LIKE.

pattern

Chaîne littérale qui représente un modèle d’expression régulière.

Si pattern ne contient pas de caractères génériques, le modèle représente uniquement la chaîne elle-même.

Pour rechercher des chaînes qui incluent des méta-caractères, tels que « . * | ?  », et ainsi de suite, faites précéder le caractère de la séquence d’échappement composée de deux barres obliques inverses «  \\  »). Contrairement à SIMILAR TO etLIKE, la syntaxe POSIX des expressions régulières ne prend pas en charge les caractères d'échappement définis par l'utilisateur.

L'une ou l'autre des expressions de caractères peut être CHAR un ou VARCHAR plusieurs types de données. En cas de différence, Amazon Redshift convertit pattern au type de données de l’expression.

Toutes les expressions de caractères peuvent être CHAR des types de VARCHAR données. Si les expressions diffèrent par le type de données, Amazon Redshift les convertit au type de données de l’expression.

POSIXla correspondance de modèles prend en charge les métacaractères suivants :

POSIX Description
. Met en correspondance un seul caractère.
* Correspond à zéro ou plusieurs occurrences.
+ Correspond à une ou plusieurs occurrences.
? Correspond à zéro ou une occurrence.
| Spécifie d’autres correspondances ; par exemple, E | H signifie E ou H.
^ Correspond au beginning-of-line personnage.
$ Correspond au end-of-line personnage.
$ Correspond à la fin de la chaîne.
[ ] Les crochets spécifient une liste de correspondance, qui doit correspondre à une expression de la liste. L’accent circonflexe (^) précède une liste de non-correspondance, qui correspond à tout caractère à l’exception des expressions représentées dans la liste.
( ) Placez entre parenthèses les éléments d’un groupe sous forme d’un seul élément logique.
{m} Répétez l’élément précédent exactement m fois.
{m,} Répétez l’élément précédent m ou plusieurs fois.
{m,n} Répétez l’élément précédent au moins m fois et pas plus de n fois.
[: :] Correspond à n'importe quel POSIX personnage d'une classe de caractères. Dans les classes de caractères suivantes, Amazon Redshift ne prend en charge que les ASCII caractères :[:alnum:],,, [:alpha:] [:lower:] [:upper:]

Amazon Redshift prend en charge les classes de POSIX caractères suivantes.

Classe de caractères Description
[[:alnum:]] Tous les ASCII caractères alphanumériques
[[:alpha:]] Tous les ASCII caractères alphabétiques
[[:blank:]] Tous les caractères espace
[[:cntrl:]] Tous les caractères de contrôle (non affichables)
[[:digit:]] Tous les chiffres numériques
[[:lower:]] Tous les caractères alphabétiques minuscules ASCII
[[:punct:]] Tous les caractères de ponctuation
[[:space:]] Tous les caractères espace (non affichables)
[[:upper:]] Tous les ASCII caractères alphabétiques en majuscules
[[:xdigit:]] Tous les caractères hexadécimaux valides

Amazon Redshift prend en charge les opérateurs suivants, influencés par Perl, dans les expressions régulières. Échappez l’opérateur à l’aide de deux barres obliques inverses («  »). (‘\\’).  

Opérateur Description Expression de classe de caractères équivalente
\\d Un caractère numérique [[:digit:]]
\\D Un caractère non numérique [^[:digit:]]
\\w Un caractère de mot [[:word:]]
\\W Un caractère autre qu’un caractère de mot [^[:word:]]
\\s Un caractère espace blanc [[:space:]]
\\S Un caractère autre qu’un caractère espace blanc [^[:space:]]
\\b Un mot limite

Exemples

Le tableau suivant présente des exemples de correspondance de modèles à l'aide d'POSIXopérateurs :

Expression Renvoie
'abc' ~ 'abc' True
'abc' ~ 'a' True
'abc' ~ 'A' False
'abc' ~ '.*(b|d).*' True
'abc' ~ '(b|c).*' True
'AbcAbcdefgefg12efgefg12' ~ '((Ab)?c)+d((efg)+(12))+' True
'aaaaaab11111xy' ~ 'a{6}.[1]{5}(x|y){2}' True
'$0.87' ~ '\\$[0-9]+(\\.[0-9][0-9])?' True
'ab c' ~ '[[:space:]]' True
'ab c' ~ '\\s' True
' ' ~ '\\S' False

L’exemple suivant recherche toutes les villes dont le nom contient E ou H :

SELECT DISTINCT city FROM users WHERE city ~ '.*E.*|.*H.*' ORDER BY city LIMIT 5; city ----------------- Agoura Hills Auburn Hills Benton Harbor Beverly Hills Chicago Heights

L’exemple suivant recherche toutes les villes dont le nom ne contient pas E ou H :

SELECT DISTINCT city FROM users WHERE city !~ '.*E.*|.*H.*' ORDER BY city LIMIT 5; city ----------------- Aberdeen Abilene Ada Agat Agawam

L’exemple suivant utilise la chaîne d’échappement (« \\ ») pour rechercher les chaînes qui incluent un point.

SELECT venuename FROM venue WHERE venuename ~ '.*\\..*' ORDER BY venueid; venuename ------------------------------ St. Pete Times Forum Jobing.com Arena Hubert H. Humphrey Metrodome U.S. Cellular Field Superpages.com Center E.J. Nutter Center Bernard B. Jacobs Theatre St. James Theatre