In questo tutorial, discuteremo dell'uso della funzione regexp_like () nei database Oracle. Questa funzione ci consente di eseguire un modello di espressione regolare corrispondente su un determinato set di valori.
Funzione oracle regexp_like
La funzione regexp_like è simile all'operatore condizionale simile. Tuttavia, a differenza dell'operatore simile, questa funzione esegue una corrispondenza del pattern regex anziché una corrispondenza a pattern singolo.
Questo lo rende più avanzato e affidabile rispetto all'operatore simile. Questo perché l'espressione regolare ci consente di specificare un modello più preciso e personalizzabile. Questo può aiutare rapidamente a restringere i risultati di ricerca all'interno di un determinato set.
La sintassi della funzione è come descritto di seguito:
Regexp_like (source_string, search_pattern, [match_parameter]);La funzione accetta gli argomenti come mostrato di seguito:
Di seguito sono riportate la sintassi e le combinazioni dell'espressione regolare accettata:
Operatore | Descrizione |
^ | Corrisponde all'inizio di una stringa come definito nel match_parameter. |
$ | Indica la fine di una stringa come definito nel match_parameter. |
* | Abbinare zero o più eventi |
+ | Abbinare uno o più occorrenze |
? | Abbinare zero o un evento |
^b | Corrisponde al personaggio dell'inizio della linea |
$ b | Corrisponde al carattere di fine linea. |
. C | Abbinare qualsiasi personaggio nel set di caratteri supportati tranne Null |
[]D | Specifica un elenco di elementi e desideri corrispondere almeno un elemento nell'elenco |
() | Consente di trattare il modello come una singola sottoespressione. |
M | Corrisponde esattamente a m volte. |
M, | Corrisponde almeno m volte. |
m, n | Corrisponde almeno m volte ma non più di n volte. |
\Ne | L'espressione del backreference (dove n è un numero intero tra 1 e 9) corrisponde alla sottoespressione dell'ennesima. |
[… ]F | Specifica l'elemento di raccolta |
[::]G | Specifica le classi di caratteri |
[==] H | Specifica le classi equivalenti. |
Per scoprire di più sulla sintassi dell'espressione regolare multilingue e sull'utilizzo nei database Oracle, considera il collegamento fornito di seguito:
https: // docs.oracolo.com/cd/b12037_01/server.101/B10759/AP_POSIX001.HTM#I690819
Quanto segue mostra i valori accettati per Match_Parameter.
Se il match_parameter non è fornito, Oracle assumerà:
Una volta che la funzione esegue l'operazione desiderata, dovrebbe restituire la riga corrispondente al modello specificato.
Esempio di utilizzo
La sezione seguente fornisce esempi che dimostrano l'uso della funzione regexp_like.
Supponiamo di avere una tabella contenente le informazioni sui dipendenti come mostrato:
Esempio 1 - Uso di base
L'esempio seguente mostra come utilizzare la funzione per cercare un nome corrispondente nella tabella dei dipendenti.
SELEZIONAREIn questo caso, la query sopra dovrebbe restituire tutti i nomi corrispondenti in cui il primo_name include 'p.'
Un output di esempio è come mostrato:
Esempio 2: abbina l'inizio della linea
Nell'esempio seguente, dimostriamo come utilizzare Match_Parameter per cercare l'inizio della linea indicata dal carattere di cura.
SELEZIONARELa tabella risultante:
Esempio 3: abbina la fine della linea
Allo stesso modo, possiamo abbinare il modello alla fine della riga usando "I" come valore del match_parameter e il segno del dollaro per indicare la fine della linea.
SELEZIONAREIn questo caso, la query sopra dovrebbe restituire i valori di corrispondenza come mostrato:
Si noti che tutti i valori della colonna Last_name con un 'r.'
Esempio 4 - Eseguire una ricerca sensibile al caso
Nell'esempio seguente, impostiamo il valore di Match_parameter su "C" per abilitare la corrispondenza sensibile al caso.
SELEZIONARENell'esempio sopra, poiché stiamo usando la sensibilità al caso con un modello di ricerca minuscolo, la query non corrisponderà a alcun valori poiché tutti i valori nella tabella sono a livello di cammello.
Esempio 5: eseguire una ricerca insensibile al caso
Per circumnavigare lo scenario di cui sopra, possiamo eseguire una corrispondenza insensibile al caso impostando il valore di Match_Parameter su "I".
Esempio:
SELEZIONAREProduzione:
In questo caso, possiamo vedere la query corrisponde a due valori.
Esempio 6 - Abbina il carattere precedente più volte.
Abilitiamo anche alla query di abbinare un personaggio precedente specifico un numero definito di volte. Un esempio è come mostrato:
Seleziona First_name, last_nameNella query di esempio sopra, cerchiamo tutte le righe corrispondenti in cui il valore contiene due caratteri 'E' nella colonna Last_Name.
I valori risultanti sono come mostrati:
Come puoi vedere, tutti i valori nella colonna Last_Name contengono due caratteri 'E'.
Conclusione
In questo post, abbiamo discusso di come utilizzare la funzione regexp_like nei database Oracle per cercare un modello di espressione regolare.