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_COUNT
Cerca una stringa per un modello di espressione regolare e restituisce un integer che indica il numero di volte in cui il modello si verifica nella stringa. Se non viene trovata alcuna corrispondenza, la funzione restituisce 0.
Sintassi
REGEXP_COUNT ( source_string, pattern [, position [, parameters ] ] )
Argomenti
- source_string
-
Un'espressione di stringa, come ad esempio un nome di colonna, da cercare.
- pattern
-
Un valore letterale di stringa che rappresenta un modello di espressione regolare.
- posizione
-
Un 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 di default è 1. Se posizione è inferiore a 1, la ricerca inizia con il primo carattere di source_string. Se posizione è maggiore rispetto al numero di caratteri in source_string, il risultato è 0.
- parameters
-
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.
-
p: interpreta il modello con il dialetto Perl Compatible Regular Expression (PCRE).
-
Tipo restituito
Numero intero
Esempio
L'esempio seguente conta il numero di volte in cui si verifica una sequenza di tre lettere.
SELECT regexp_count('abcdefghijklmnopqrstuvwxyz', '[a-z]{3}'); regexp_count -------------- 8
L'esempio seguente conta il numero di volte in cui il nome di dominio di livello superiore è org
oppure edu
.
SELECT email, regexp_count(email,'@[^.]*\\.(org|edu)')FROM users ORDER BY userid LIMIT 4; email | regexp_count -----------------------------------------------+-------------- Etiam.laoreet.libero@sodalesMaurisblandit.edu | 1 Suspendisse.tristique@nonnisiAenean.edu | 1 amet.faucibus.ut@condimentumegetvolutpat.ca | 0 sed@lacusUtnec.ca | 0
Nell'esempio seguente vengono conteggiate le ricorrenze della stringa FOX
utilizzando una corrispondenza senza distinzione tra maiuscole e minuscole.
SELECT regexp_count('the fox', 'FOX', 1, 'i'); regexp_count -------------- 1
Nell'esempio seguente viene utilizzato un modello scritto in dialetto PCRE per individuare le parole contenenti almeno un numero e una lettera minuscola. Utilizza l'operatore ?=
, che ha una connotazione look-ahead specifica in PCRE. In questo esempio viene contato il numero di ricorrenze di tali parole, con la corrispondenza tra maiuscole e minuscole.
SELECT regexp_count('passwd7 plain A1234 a1234', '(?=[^ ]*[a-z])(?=[^ ]*[0-9])[^ ]+', 1, 'p'); regexp_count -------------- 2
Nell'esempio seguente viene utilizzato un modello scritto in dialetto PCRE per individuare le parole contenenti almeno un numero e una lettera minuscola. Utilizza l'operatore ?=
, che ha una connotazione specifica in PCRE. In questo esempio viene contato il numero di ricorrenze di tali parole, ma differisce dall'esempio precedente in quanto utilizza la corrispondenza senza distinzione tra maiuscole e minuscole.
SELECT regexp_count('passwd7 plain A1234 a1234', '(?=[^ ]*[a-z])(?=[^ ]*[0-9])[^ ]+', 1, 'ip'); regexp_count -------------- 3