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à.
Condizioni di corrispondenza di modelli
Argomenti
Un operatore di corrispondenza di modelli cerca una stringa in base a un modello specificato nell'espressione condizionale e restituisce true o false a seconda se trova la corrispondenza. Amazon Redshift utilizza tre metodi per la corrispondenza dei modelli:
-
Espressioni LIKE
L'operatore LIKE confronta un'espressione di stringa, come il nome di colonna, con un modello che usa i caratteri jolly
%
(percentuale) e_
(sottolineatura). La corrispondenza di modello LIKE copre sempre l'intera stringa. LIKE esegue una corrispondenza che distingue tra maiuscole e minuscole e ILIKE esegue una corrispondenza che non distingue tra maiuscole e minuscole. -
Espressioni regolari SIMILAR TO
L'operatore SIMILAR TO esegue una corrispondenza tra un'espressione di stringa e un modello di espressione regolare standard SQL, che può comprendere un set di metacaratteri di corrispondenza di modelli che comprende i due supportati dall'operatore LIKE. SIMILAR TO esegue una corrispondenza sull'intera stringa che distingue tra maiuscole e minuscole.
-
Espressioni regolari in stile POSIX
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 effettuare una corrispondenza su qualsiasi porzione della stringa ed eseguono una corrispondenza che distingue tra maiuscole e minuscole.
La corrispondenza di espressioni regolari, usando operatori SIMILAR TO o 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 SIMILAR TO '%(Ring|Die)%';
select count(*) from event where eventname LIKE '%Ring%' OR eventname LIKE '%Die%';