Oracle GILLA

Oracle Gilla



I Oracle och andra relationsdatabaser är mönstermatchning en populär funktion som låter dig söka efter strängmönster med hjälp av speciella syntaxer. Du kan till exempel söka efter en delsträng inom en stor uppsättning strängar med hjälp av mönstermatchande operatorer och funktioner.

Detta gör det mycket användbart för att bygga enkla sökklausuler utan att ådra sig betydande prestationspåföljder på databasen.







I den här handledningen kommer du att stöta på LIKE-operatorn i Oracle för att utföra mönstermatchningsfrågor.



Oracle LIKE-operatör

LIKE-operatorn i Oracle låter dig söka efter ett specifikt mönster i en given kolumn. Du kan till exempel använda den för att hitta alla rader där en kunds förnamn börjar med mönstret 'Ja'.



Du kommer ofta att hitta den här operatorn i kombination med andra SQL-satser, såsom WHERE-satsen, för att filtrera våra resultat baserat på ett specifikt mönster.





Vi kan uttrycka syntaxen för LIKE-operatorn i SQL som visas nedan:

uttryck SOM mönster [ FLY 'escape_character' ]



  1. Uttrycksparametern anger kolumnen som du vill söka efter.
  2. Mönsterparametern definierar det specifika mönster som du vill söka efter. Det angivna mönstret kan innehålla jokertecken som % och _ för att matcha valfritt antal tecken respektive ett enda tecken.
  3. Vi kan också inkludera ESCAPE-satsen för att specificera ett escape-tecken som används för att söka efter de faktiska jokertecken.

Oracle LIKE-operatörsexempel

Följande exempel visar hur man använder LIKE-operatorn i en Oracle-tabell.

Anta att vi har en tabell som innehåller kundinformation enligt nedan:

Exempel 1 – Använda % jokertecken

Vi kan använda jokertecken % för att matcha alla strängar med noll eller fler tecken. Till exempel kan vi hitta alla poster i en tabell som innehåller namnet 'Will%'.

Ta de anställdas tabell som visas nedan:

Välj förnamn, efternamn, lön
från ANSTÄLLDA
där FIRST_NAME gillar 'Kommer%'
ordning efter förnamn;

Den föregående frågan väljer kolumnerna förnamn, efternamn och lön från de anställdas tabell och ordnar de resulterande värdena efter kolumnen förnamn.

Vi kombinerar också en where-sats i kombination med en LIKE-operator med jokertecken % för att bara hämta raderna där förnamnet börjar med 'Will'.

Detta bör returnera raderna som:

Vi kan också använda jokertecken % för att hämta raderna som slutar i ett specifikt mönster.

Ett exempel visas nedan:

Välj förnamn, efternamn, lön
från ANSTÄLLDA
där FIRST_NAME gillar '%är'
ordning efter förnamn;

I det här fallet bör den föregående frågan returnera alla rader där förnamnet slutar på 'er'. Ett exempel på resulterande värde visas nedan:

Oracle-databasens LIKE-operator är skiftlägeskänslig som standard, så det är viktigt att ha detta i åtanke när du söker efter specifika mönster. Du kan använda andra funktioner, såsom nedre och övre, för att förneka detta beteende.

Exempel 2 – Användning av Escape-klausulen

Följande exempel visar hur man använder ESCAPE-satsen i Oracle LIKE-operatorn:

Välj förnamn, efternamn, lön, provision_pct
från ANSTÄLLDA
där commission_pct gillar 'tjugo\%' fly '\' ;

Den föregående frågan väljer kolumnerna first_name, last_name, lön och provision_pct från tabellen ANSTÄLLDA. WHERE-satsen använder LIKE-operatorn med ESCAPE-satsen för att hämta posterna där commission_pct-kolumnen innehåller strängen '20%' (med ett bokstavligt %-tecken, inte ett jokertecken).

I det här fallet undviker vi %-tecknet med ett omvänt snedstreck (\) när vi söker efter strängen 20%. Detta gör att LIKE-operatorn kan söka efter den exakta strängen '20%' istället för att behandla %-tecknet som ett jokertecken.

Den här frågan skulle returnera alla rader från tabellen ANSTÄLLDA där kolumnen commission_pct innehåller den exakta strängen '20%', tillsammans med kolumnerna förnamn, efternamn och lön för dessa rader.

Slutsats

I det här inlägget lärde du dig hur du använder LIKE-operatorn i Oracle-databaser för att söka efter specifika mönster i en tabell. Flera exempel ges för att markera med hjälp av jokertecken och ESCAPE-satsen.