Oracle regexp_like

Oracle regexp_like
Le stringhe sono un elemento significativo quando si tratta di database. Di conseguenza, è più probabile che il tuo database sia composto da dati di stringa rispetto ad altri tipi di dati. È quindi utile disporre di strumenti e risorse per aiutarti a lavorare con i dati di stringa e stringa.

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:

  1. Source_string - Il parametro Source_String definisce la stringa che deve essere cercata. Questa può essere una stringa letterale o una colonna di tipo di dati supportato. I tipi di dati supportati includono char, varchar2, nchar, nvarchar2, clob, ecc.
  2. Search_Pattern -Questo parametro viene utilizzato per specificare il modello di espressione regolare da abbinare alla stringa di input.

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

  • Match_parameter - Questo descrive una stringa utilizzata per alterare il comportamento di corrispondenza predefinito della funzione. Il match_parameter è simile a quello della funzione regexp_substr ().

Quanto segue mostra i valori accettati per Match_Parameter.

  1. 'C' - Esegue una ricerca sensibile al caso.
  2. 'I' - dice alla funzione di eseguire una ricerca insensibile al caso.
  3. 'n' - consente al carattere d'epoca di abbinare il carattere della nuova linea. Per impostazione predefinita, è trattato come un personaggio jolly.
  4. 'm' - consente all'espressione di avere più righe in cui il personaggio di caret (^) indica l'inizio e il segno del dollaro ($) indica la fine della linea. Per impostazione predefinita, si presume che l'espressione sia una singola riga.
  5. 'x' -consente la funzione per ignorare i caratteri di spazi bianchi.

Se il match_parameter non è fornito, Oracle assumerà:

  1. Il carattere del periodo non equivale a un personaggio di Newline.
  2. La sorgente_string è un input a linea singola.
  3. La sensibilità al caso predefinita è definita nel parametro NLS_SORT.

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.

SELEZIONARE
nome e cognome
Dai dipendenti
Dove regexp_like (first_name, 'p');

In 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.

SELEZIONARE
nome e cognome
Dai dipendenti
Dove regexp_like (first_name, '^h', 'i');

La 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.

SELEZIONARE
nome e cognome
Dai dipendenti
Dove regexp_like (last_name, 'r $', 'i');

In 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.

SELEZIONARE
nome e cognome
Dai dipendenti
Dove regexp_like (first_name, "julia", "c");

Nell'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:

SELEZIONARE
nome e cognome
Dai dipendenti
Dove regexp_like (first_name, 'julia', 'i');

Produzione:

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_name
Dai dipendenti
Dove regexp_like (last_name, 'e 2', 'i');

Nella 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.