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à.
REGEXPINSTRfunzione _
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 POSITIONfunzione, ma consente di cercare in una stringa un modello di espressione regolare. Per ulteriori informazioni sulle espressioni regolari, vedi POSIXoperatori 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
-
Un valore letterale di UTF -8 stringhe che rappresenta un modello di espressione regolare. Per ulteriori informazioni, consulta POSIXoperatori.
- 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 salta le primeoccurrence-1
corrispondenze. 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 pattern include una sottoespressione, REGEXP _ INSTR corrisponde a una sottostringa utilizzando la prima sottoespressione in pattern. REGEXP_ INSTR considera solo la prima sottoespressione; le sottoespressioni aggiuntive vengono ignorate. Se il pattern non ha una sottoespressione, REGEXP _ INSTR ignora il parametro 'e'.
-
p — Interpreta il pattern con il dialetto Perl Compatible Regular Expression ()PCRE. Per ulteriori informazioni suPCRE, vedete Perl Compatible Regular Expressions
in Wikipedia.
-
Tipo restituito
Numero intero
Esempi
Gli esempi seguenti utilizzano i dati della USERS tabella nel database di TICKIT esempio. 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 uno schema scritto in PCRE dialetto per individuare parole contenenti almeno un numero e una lettera minuscola, utilizzate l'esempio seguente. Utilizza l'?=
operatore, che ha una connotazione 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 uno schema scritto in PCRE dialetto per individuare parole contenenti almeno un numero e una lettera minuscola, utilizzate l'esempio seguente. Utilizza l'?=
operatore, che ha una connotazione 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 | +--------------+