POSIXoperatori - Amazon Redshift

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

POSIXoperatori

Un'espressione POSIX regolare è una sequenza di caratteri che specifica uno schema di corrispondenza. Una stringa corrisponde a un'espressione regolare se è un membro del set regolare descritto dall'espressione regolare.

POSIXle espressioni regolari forniscono un mezzo più potente per la corrispondenza dei modelli rispetto agli SIMILARPER operatori LIKE and. POSIXi modelli di espressioni regolari possono corrispondere a qualsiasi parte di una stringa, SIMILAR a differenza dell'operatore TO, che restituisce true solo se il suo modello corrisponde all'intera stringa.

Nota

La corrispondenza delle espressioni regolari mediante POSIX operatori è costosa dal punto di vista computazionale. Si consiglia di LIKE utilizzarlo quando possibile, specialmente quando si elabora un numero molto elevato di righe. Ad esempio, le seguenti query sono identiche dal punto di vista funzionale, ma la query che utilizza LIKE viene eseguita molte volte più velocemente della query che utilizza un'espressione regolare:

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

Sintassi

expression [ ! ] ~ pattern

Argomenti

espressione

Un'espressione valida di UTF -8 caratteri, ad esempio un nome di colonna.

!

Operatore di negazione. Non corrisponde all'espressione regolare.

~

Eseguire una corrispondenza che distingue tra maiuscole e minuscole su qualsiasi sottostringa dell'espressione.

Nota

Un ~~ è sinonimo di LIKE.

pattern

Un valore letterale di stringa che rappresenta un modello di espressione regolare.

Se il modello non contiene caratteri jolly, allora il modello rappresenta solo la stringa stessa.

Per cercare stringhe che comprendono metacaratteri, come ". * | ? ", ecc., eseguire l'escape del carattere usando due barre rovesciate (" \\"). A differenza di SIMILAR TO eLIKE, la sintassi delle espressioni POSIX regolari non supporta un carattere di escape definito dall'utente.

Entrambe le espressioni dei caratteri possono essere di due tipi CHAR di VARCHAR dati. Se differiscono, Amazon Redshift converte il modello al tipo di dati dell'espressione.

Tutte le espressioni di caratteri possono essere CHAR di tipi di VARCHAR dati. Se l'espressione differisce per tipo di dati, Amazon Redshift la converte nel tipo di dati dell'espressione.

POSIXil pattern matching supporta i seguenti metacaratteri:

POSIX Descrizione
. Abbina qualsiasi carattere singolo.
* Associa zero o più occorrenze.
+ Associa una o più occorrenze.
? Associa zero o una occorrenza.
| Specifica corrispondenze alternative; ad esempio, E | H significa E o H.
^ Corrisponde al personaggio. beginning-of-line
$ Corrisponde al end-of-line personaggio.
$ Associa la fine della riga.
[ ] Le parentesi specificano un elenco di corrispondenza, che deve corrispondere a un'espressione nell'elenco. Un accento circonflesso (^) precede un elenco di non corrispondenze, che associa qualsiasi carattere ad eccezione delle espressioni rappresentate nell'elenco.
( ) Raggruppa tra parentesi voci di gruppo in una singola voce logica.
{m} Ripetere la voce precedente esattamente m volte.
{m,} Ripetere la voce precedente m o più volte.
{m,n} Ripetere la voce precedente almeno m volte e non più di n volte.
[: :] Corrisponde a qualsiasi carattere all'interno di una classe di POSIX caratteri. Nelle seguenti classi di caratteri, Amazon Redshift supporta solo ASCII caratteri:[:alnum:],,, [:alpha:] [:lower:] [:upper:]

Amazon Redshift supporta le seguenti classi di POSIX caratteri.

Classe di caratteri Descrizione
[[:alnum:]] Tutti i ASCII caratteri alfanumerici
[[:alpha:]] Tutti i caratteri alfabetici ASCII
[[:blank:]] Tutti i caratteri di spazio vuoto
[[:cntrl:]] Tutti i caratteri di controllo (non stampabili)
[[:digit:]] Tutte le cifre numeriche
[[:lower:]] Tutti i caratteri alfabetici minuscoli ASCII
[[:punct:]] Tutti i caratteri di punteggiatura
[[:space:]] Tutti i caratteri di spazio (non stampabili)
[[:upper:]] Tutti i caratteri alfabetici maiuscoli ASCII
[[:xdigit:]] Tutti i caratteri esadecimali validi

Amazon Redshift supporta i seguenti operatori influenzati da Perl in espressioni regolari. Esegui l'escape dell'operatore usando due barre rovesciate (‘\\').  

Operatore Descrizione Espressione di classe di caratteri equivalente
\\d Un carattere cifra [[:digit:]]
\\D Un carattere non cifra [^[:digit:]]
\\w Un carattere parola [[:word:]]
\\W Un carattere non parola [^[:word:]]
\\s Un carattere di spazio vuoto [[:space:]]
\\S Un carattere di spazio non vuoto [^[:space:]]
\\b Una parola limite

Esempi

La tabella seguente mostra esempi di pattern matching mediante POSIX operatori:

Expression Valori restituiti
'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'esempio seguente trova tutte le città il cui nome contiene E o 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'esempio seguente trova le città il cui nome non contiene E o H:

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

Nell'esempio seguente viene usata la stringa di escape predefinita ("\\") per cercare stringhe che contengono un punto.

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