Amazon Redshift non supporterà più la creazione di nuovi Python UDFs a partire dalla Patch 198. Python esistente UDFs continuerà a funzionare fino al 30 giugno 2026. Per ulteriori informazioni, consulta il post del blog
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à.
Funzione REGEXP_INSTR
Cerca una stringa per un modello di espressione regolare e restituisce un integer che indica la posizione iniziale o finale della sottostringa corrispondente. Se non viene trovata alcuna corrispondenza, la funzione restituisce 0. REGEXP_INSTR è simile alla funzione POSITION, ma consente di cercare una stringa per un modello di espressione regolare. Per ulteriori informazioni sulle espressioni regolari, consulta Operatori POSIX ed Espressione regolare
Sintassi
REGEXP_INSTR( source_string, pattern [, position [, occurrence] [, option [, parameters ] ] ] ] )
Arguments (Argomenti)
- source_string
-
Un'espressione di stringa, come ad esempio un nome di colonna, da cercare.
- pattern
-
Un valore letterale di stringa UTF-8 che rappresenta un modello di espressione regolare. Per ulteriori informazioni, consulta Operatori POSIX.
- posizione
-
(Facoltativo) Un valore
INTEGERpositivo che indica la posizione all'interno di source_string per iniziare la ricerca. La posizione si basa sul numero di caratteri, non di byte, pertanto i caratteri multibyte vengono contati come caratteri singoli. Il valore predefinito è1. Se position è inferiore a1, la ricerca inizia con il primo carattere di source_string. Se position è maggiore rispetto al numero di caratteri in source_string, il risultato è0. - occorrenza
-
(Facoltativo) Un valore
INTEGERpositivo che indica quale occorrenza del modello utilizzare. REGEXP_INSTR ignora le prime corrispondenzeoccurrence-1. Il valore predefinito è1. Se occurrence è inferiore a1oppure maggiore rispetto al numero di caratteri in source_string, la ricerca viene ignorata e il risultato è0. - option
-
(Facoltativo) Un valore che indica se restituire la posizione del primo carattere della corrispondenza (
0) o la posizione del primo carattere dopo la fine della corrispondenza (1). Un valore diverso da zero equivale a1. Il valore predefinito è0. - parameters
-
(Facoltativo) Uno o più letterali di stringa che indicano come la funzione corrisponde al modello. Di seguito sono riportati i valori possibili:
-
c: eseguire una corrispondenza in base a maiuscole e minuscole. L'impostazione predefinita è utilizzare la corrispondenza con distinzione tra maiuscole e minuscole.
-
i: eseguire una corrispondenza senza distinzione tra maiuscole e minuscole.
-
e: estrarre una sottostringa usando una sottoespressione.
Se modello include una sottoespressione, REGEXP_INSTR corrisponde a una sottostringa che utilizza la prima sottoespressione in modello. REGEXP_INSTR considera solo la prima sottoespressione; le sottoespressioni aggiuntive vengono ignorate. Se il modello non ha una sottoespressione, REGEXP_INSTR ignora il parametro "e".
-
p: interpreta il modello con il dialetto Perl Compatible Regular Expression (PCRE). Per ulteriori informazioni su PCRE, consulta Perl Compatible Regular Expressions
in Wikipedia.
-
Tipo restituito
Numero intero
Esempi
Negli esempi seguenti vengono utilizzati i dati della tabella USERS database di esempio TICKIT. Per ulteriori informazioni, consulta Database di esempio.
Per ricercare il carattere @ che inizia un nome di dominio e restituisce la posizione iniziale della prima corrispondenza, utilizza l'esempio seguente.
SELECT email, REGEXP_INSTR(email, '@[^.]*') FROM users ORDER BY userid LIMIT 4;+-----------------------------------------------+--------------+ | email | regexp_instr | +-----------------------------------------------+--------------+ | Etiam.laoreet.libero@sodalesMaurisblandit.edu | 21 | | Suspendisse.tristique@nonnisiAenean.edu | 22 | | amet.faucibus.ut@condimentumegetvolutpat.ca | 17 | | sed@lacusUtnec.ca | 4 | +-----------------------------------------------+--------------+
Per ricercare le varianti della parola Center e restituire la posizione iniziale della prima corrispondenza, utilizza l'esempio seguente.
SELECT venuename, REGEXP_INSTR(venuename,'[cC]ent(er|re)$') FROM venue WHERE REGEXP_INSTR(venuename,'[cC]ent(er|re)$') > 0 ORDER BY venueid LIMIT 4;+-----------------------+--------------+ | venuename | regexp_instr | +-----------------------+--------------+ | The Home Depot Center | 16 | | Izod Center | 6 | | Wachovia Center | 10 | | Air Canada Centre | 12 | +-----------------------+--------------+
Per trovare la posizione iniziale della prima occorrenza della stringa FOX utilizzando una logica di associazione senza distinzione tra maiuscole e minuscole, utilizza l'esempio seguente.
SELECT REGEXP_INSTR('the fox', 'FOX', 1, 1, 0, 'i');+--------------+ | regexp_instr | +--------------+ | 5 | +--------------+
Per utilizzare un modello scritto in dialetto PCRE per individuare le parole contenenti almeno un numero e una lettera minuscola, utilizza l'esempio seguente. Utilizza l'operatore ?=, che ha una connotazione look-ahead specifica in PCRE. In questo esempio viene trovata la posizione iniziale della seconda parola di questo tipo.
SELECT REGEXP_INSTR('passwd7 plain A1234 a1234', '(?=[^ ]*[a-z])(?=[^ ]*[0-9])[^ ]+', 1, 2, 0, 'p');+--------------+ | regexp_instr | +--------------+ | 21 | +--------------+
Per utilizzare un modello scritto in dialetto PCRE per individuare le parole contenenti almeno un numero e una lettera minuscola, utilizza l'esempio seguente. Utilizza l'operatore ?=, che ha una connotazione look-ahead specifica in PCRE. In questo esempio viene trovata la posizione iniziale della seconda parola, ma differisce dall'esempio precedente in quanto utilizza la corrispondenza senza distinzione tra maiuscole e minuscole.
SELECT REGEXP_INSTR('passwd7 plain A1234 a1234', '(?=[^ ]*[a-z])(?=[^ ]*[0-9])[^ ]+', 1, 2, 0, 'ip');+--------------+ | regexp_instr | +--------------+ | 15 | +--------------+