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, vedere Operatori POSIX Espressione regolare
Sintassi
REGEXP_INSTR( source_string, pattern [, position [, occurrence] [, option [, parameters ] ] ] ] )
Argomenti
- source_string
-
Un'espressione di stringa, come ad esempio un nome di colonna, da cercare.
- pattern
-
Una stringa letterale UTF-8 che rappresenta un modello di espressione regolare. Per ulteriori informazioni, consulta Operatori POSIX.
- posizione
-
(Facoltativo) Un valore
INTEGER
positivo 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
INTEGER
positivo che indica quale occorrenza del modello utilizzare. REGEXP_INSTR ignora le prime corrispondenzeoccurrence-1
. Il valore predefinito è1
. Se occurrence è inferiore a1
oppure 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, vedere Espressioni regolari compatibili con Perl
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 | +--------------+