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, significa E o H . |
^ |
Corrisponde al beginning-of-line personaggio. |
$ |
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