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:
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
Følgende viser de aksepterte verdiene for match_parameter.
Hvis Match_Parameter ikke er gitt, vil Oracle anta:
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 UTI 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 UTDet 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 UTI 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 UTI 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 UTProduksjon:
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_nameI 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.