Oracle Regexp_like

Oracle Regexp_like
Strenger er en betydelig byggestein når det gjelder databaser. Som et resultat er det mer sannsynlig at databasen din vil bestå av strengdata enn andre datatyper. Det er derfor fordelaktig å ha verktøy og ressurser for å hjelpe deg med å jobbe med streng og strenglignende data.

I denne opplæringen skal vi diskutere bruken av regexp_like () -funksjonen i Oracle -databaser. Denne funksjonen lar oss utføre et vanlig uttrykksmønster som samsvarer med et gitt sett med verdier.

Oracle regexp_lignende funksjon

REGEXP_LIKE -funksjonen ligner på lignende betinget operatør. I motsetning til lignende operatør, utfører denne funksjonen imidlertid en regex mønsterkamp i stedet for et enkelt mønstermatching.

Dette gjør det mer avansert og pålitelig sammenlignet med lignende operatør. Dette er fordi vanlig uttrykk lar oss spesifisere et mer presist og tilpassbart mønster. Dette kan raskt bidra til å begrense søkeresultatene i et gitt sett.

Funksjonssyntaksen er som beskrevet nedenfor:

Regexp_like (source_string, search_pattern, [match_parameter]);

Funksjonen godtar argumentene som vist nedenfor:

  1. Source_String - Source_String -parameteren definerer strengen som må søkes. Dette kan være en bokstavelig streng eller en kolonne med støttet datatype. Støttede datatyper inkluderer røye, varchar2, nchar, nvarchar2, clob, etc.
  2. search_pattern -Denne parameteren brukes til å spesifisere det vanlige uttrykksmønsteret som skal matches med inngangsstrengen.

Følgende er den aksepterte syntaks for regelmessig uttrykk og kombinasjoner:

Operatør Beskrivelse
^ Matcher begynnelsen på en streng som definert i Match_Parameter.
$ Betegner slutten av en streng som definert i match_parameter.
* Match null eller flere forekomster
+ Match en eller flere forekomster
? Match null eller en forekomst
^b Samsvarer med begynnelsen av linjen
$ b Samsvarer med end-of-line-karakteren.
. c Match en hvilken som helst karakter i det støttede karaktersettet bortsett fra null
[] d Angir en liste over elementer og ønsker å matche minst ett element i listen
() Gjør at mønsteret kan behandles som en enkelt subexpression.
M Matcher nøyaktig M ganger.
M, Kamper minst m ganger.
m, n Samsvarer minst m ganger, men ikke mer enn n ganger.
\ ne Bakreferanseuttrykk (der n er et heltall mellom 1 og 9) samsvarer med den første subexpressionen.
[…] F Spesifiserer kollisjonselementet
[::] g Angir karakterklassene
[==] h Angir tilsvarende klasser.

For å oppdage mer om syntaks for flerspråklig reguleringsuttrykk og bruk i Oracle -databaser, bør du vurdere lenken nedenfor:

https: // dokumenter.Oracle.com/cd/b12037_01/server.101/b10759/ap_posix001.HTM#I690819

  • match_parameter - Dette beskriver en streng som brukes til å endre standard matchende oppførsel til funksjonen. Match_parameter er lik den for regexp_substr () -funksjonen.

Følgende viser de aksepterte verdiene for match_parameter.

  1. 'C' - Utfører et saksfølsomt søk.
  2. 'Jeg' - forteller funksjonen om å utføre et etterfølgende søk.
  3. 'n' - lar periodekarakteren matche den nye linjekarakteren. Som standard blir det behandlet som et jokertegn.
  4. 'M' - Lar uttrykket ha flere linjer der karetten (^) karakteren betegner starten og dollartegnet ($) indikerer slutten av linjen. Som standard antas uttrykket å være en enkelt linje.
  5. 'X' -LADER FUNKSJONEN Å INGERERTE HITHESPACE -tegn.

Hvis Match_Parameter ikke er gitt, vil Oracle anta:

  1. Periodekarakteren tilsvarer ikke et nytt linjekarakter.
  2. Source_string er en enkeltlinjeinngang.
  3. Standard case -følsomhet er definert i parameteren NLS_SORT.

Når funksjonen utfører ønsket operasjon, bør den returnere raden som samsvarer med det spesifiserte mønsteret.

Eksempelbruk

Følgende avsnitt gir eksempler som viser bruken av regexp_lignende funksjonen.

Anta at vi har en tabell som inneholder ansattes informasjon som vist:

Eksempel 1 - Grunnleggende bruk

Følgende eksempel viser hvordan du bruker funksjonen til å søke etter et matchende navn i de ansattes bord.

PLUKKE UT
fornavn Etternavn
Fra ansatte
Hvor regexp_like (first_name, 'p');

I dette tilfellet skal spørringen ovenfor returnere alle de matchende navnene der førstenavn inkluderer 'P.'

Et eksempelutgang er som vist:

Eksempel 2 - Match begynnelsen av linjen

I eksemplet nedenfor demonstrerer vi hvordan du bruker Match_Parameter for å søke på begynnelsen av linjen som er betegnet med CARET -karakteren.

PLUKKE UT
fornavn Etternavn
Fra ansatte
Hvor regexp_like (first_name, '^h', 'i');

Det resulterende tabellen:

Eksempel 3 - Match slutten av linjen

Tilsvarende kan vi matche mønsteret på slutten av linjen ved å bruke 'I' som verdien av match_parameter og dollartegn for å betegne slutten av linjen.

PLUKKE UT
fornavn Etternavn
Fra ansatte
Hvor regexp_like (last_name, 'r $', 'i');

I dette tilfellet skal spørringen ovenfor returnere samsvarsverdiene som vist:

Legg merke til at alle verdiene til siste_navn -kolonnen slutter med en 'r.'

Eksempel 4 - Utfør et saksfølsomt søk

I eksemplet nedenfor setter vi verdien av Match_Parameter til 'C' for å muliggjøre case-sensitiv matching.

PLUKKE UT
fornavn Etternavn
Fra ansatte
Hvor regexp_like (first_name, 'Julia', 'C');

I eksemplet ovenfor, siden vi bruker saksfølsomhet med et små søkemønster, vil ikke spørringen samsvare med noen verdier, da alle verdiene i tabellen er kamel-baserte.

Eksempel 5 - Utfør et saken ufølsomt søk

For å omgå ovennevnte scenario, kan vi utføre en case-ufølsom matching ved å sette verdien av match_parameter til 'i'.

Eksempel:

PLUKKE UT
fornavn Etternavn
Fra ansatte
Hvor regexp_like (first_name, 'Julia', 'i');

Produksjon:

I dette tilfellet kan vi se spørringen samsvarer med to verdier.

Eksempel 6 - Match foregående karakter flere ganger.

Vi aktiverer også spørringen for å matche et spesifikt foregående tegn et definert antall ganger. Et eksempel er som vist:

Velg First_name, Last_name
Fra ansatte
Hvor regexp_like (last_name, 'e 2', 'i');

I eksemplet spørring ovenfor, søker vi etter alle matchende rader der verdien inneholder to 'E' tegn i siste_navn -kolonnen.

De resulterende verdiene er som vist:

Som du kan se, inneholder alle verdiene i kolonnen Last_Name to 'E' -tegn.

Konklusjon

I dette innlegget diskuterte vi hvordan du bruker REGEXP_LIKE -funksjonen i Oracle -databaser for å søke etter et vanlig uttrykksmønster.