Operatori POSIX - 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à.

Operatori POSIX

Un'espressione regolare POSIX è 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.

Le espressioni regolari POSIX forniscono un mezzo più potente per la corrispondenza di modelli rispetto agli operatori LIKE e SIMILAR TO. I modelli di espressioni regolari POSIX possono corrispondere a qualsiasi porzione di una stringa, a differenza dell'operatore SIMILAR TO che restituisce true solo se il modello corrisponde all'intera stringa.

Nota

La corrispondenza di espressioni regolari usando operatori POSIX è costosa in termini di calcolo. Consigliamo di usare LIKE quando possibile, soprattutto se si elaborano grandi quantità di righe. Ad esempio, le query seguenti sono identiche dal punto di vista funzionale, ma la query che usa LIKE viene eseguita molto più velocemente rispetto alla query che usa 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 di caratteri UTF-8 valida, come 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 e LIKE, la sintassi dell'espressione regolare POSIX non supporta un carattere di escape definito dall'utente.

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

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

La corrispondenza di modelli POSIX 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.
[: :] Associa qualsiasi carattere in una classe di caratteri POSIX. Nelle classi di caratteri seguenti, Amazon Redshift supporta solo i caratteri ASCII [:alnum:], [:alpha:], [:lower:] e [:upper:]

Amazon Redshift supporta le seguenti classi di caratteri POSIX.

Classe di caratteri Descrizione
[[:alnum:]] Tutti i caratteri alfanumerici ASCII
[[: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 ASCII minuscoli
[[:punct:]] Tutti i caratteri di punteggiatura
[[:space:]] Tutti i caratteri di spazio (non stampabili)
[[:upper:]] Tutti i caratteri alfabetici ASCII maiuscoli
[[: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 riportata di seguito mostra esempi di corrispondenza di modelli usando operatori POSIX:

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