mysql like tutorial with syntax
Denna handledning förklarar mönstermatchning med MySQL LIKE-operatören:
Mönstermatchning är en viktig funktion i nästan alla programmeringsspråk som - Java / C # / Python etc som oftast utnyttjar användningen av Regular Expressions för mönstermatchning mot en given strängingång.
MySQL ger en användarvänlig operatör som heter LIKE, som kan användas för att matcha strängvärdena mot angivna mönster och är användbara för att fråga stora datamängder.
Vad du kommer att lära dig:
MySQL LIKE
Syntax:
LIKE-operatören används tillsammans med WHERE-satsen i en SELECT-fråga.
I en enkel fråga ser syntaxen ut som nedan.
SELECT {column_names} (*) FROM {table_name} WHERE {column_with_string_value} LIKE {match_pattern}
Olika komponenter i denna syntax förklaras enligt följande:
- {column_names}: Det här är de kolumnnamn som ska visas som en utdata från SELECT-frågan. Dessa värden kan vara * för att välja alla kolumner eller kommaseparerade namn på enskilda kolumner.
- {tabellnamn}: Detta är namnet på tabellen där frågan måste köras.
- {column_with_string_value}: Detta är den kolumn vars värden måste köras mot det angivna mönstret. Observera att alla jämförelser görs i en kolumn som kan konverteras till sträng.
- {match_pattern}: Detta är matchningsuttrycket mot vilket kolumnvärdena måste jämföras. Ett urval av matchningsmönster kan vara - ‘ SM% ”. Detta skulle matcha alla kolumnvärden som börjar med SM. Exempel: SMART, LUKT, RÖK, etc.
På samma sätt som denna fråga kan LIKE-operatören användas även med komplexa frågor med JOINS, etc eftersom LIKE bara är en jämförelseoperator och kan användas varhelst kolumnvärdesjämförelse är möjlig.
Notera: På samma sätt som LIKE kan vi också använda den negerade varianten, som är 'NOT LIKE'. Så i det här fallet, i stället för att returnera matchningsresultaten, kommer frågorna med operatören ”INTE Gilla” att returnera resultat som inte matchar.
MySQL-matchningsmönster
LIKE Operator kan användas tillsammans med två typer av mönster. Dessa listas i tabellen nedan:
Mönster | |
---|---|
% (Procent) | Matcha valfritt antal tecken (inklusive inget tecken alls) |
_ (Understrykning) | Matchar en enda karaktär |
Nu kommer vi att se några exempel som använder båda mönstren.
% Matchmönster
% -mönster används när du vill matcha 0 eller fler tecken efter eller före placeringen.
Till exempel: om du vill matcha en sträng ”it” från en kolumn med anställdas namn. Anta att det finns namn som - Amit, Anchit, Arpit, Nikita, Smith, etc. Vi kan se att alla namn har “it” -strängen. Men deras positionering är annorlunda.
Antag att kolumnnamnet är namn och tabellnamnet är studentnamn.
Använd följande exempeldataskript för att fylla i databasen:
CREATE TABLE student_names (name VARCHAR(100)); INSERT INTO student_names VALUES('Amit'),('Ankit'),('Smith'),('Nikita'),('Mohit');
Låt oss se hur vi kan använda% Match-mönstret.
SELECT * FROM student_names WHERE name LIKE '%it%'
Produktion:
namn |
---|
Amit |
Ankit |
Smed |
Nikita |
Mohit |
Vad detta nu betyder är att det kan matcha en sträng som har 'it' -strängen på vilken plats som helst och det kan finnas ett antal tecken före och efter matchen. Du kan se att alla matchande namn returneras som utdata.
Skriv om frågan så att bara de namn matchas som slutar med “it” -strängen.
SELECT * FROM student_names WHERE name LIKE '%it'
Så här har vi tagit bort det efterföljande '%' -tecknet och placerat 'it' -strängen i slutet. Detta mönster tillåter valfritt antal tecken före 'it' men strängen bör sluta med 'it' -strängen.
Output av ovanstående fråga:
namn |
---|
Amit |
Ankit |
Mohit |
Notera: Det är viktigt att notera här att mönstret som nämns med ”%” -tecknet är skiftlägeskänsligt. Så för ovanstående exempel, istället för '% it' kunde vi ha använt '% IT' eller '% It', hade produktionen fortfarande varit densamma.
_Matchmönster
Låt oss nu titta på hur vi kan använda matchningsmönstret ”_”. Vi vet att '_' tillåter exakt en karaktär.
Antag att vi vill fråga alla de fem bokstäverna från samma tabell (studentnamn).
För att använda '_' mönstermatcher i det här fallet har vi angett fem _ (Underscores) tillsammans med LIKE Pattern som bara matchar de namn som är 5 tecken långa.
SELECT * FROM student_names WHERE name LIKE '_____'
Produktion:
namn |
---|
Ankit |
Mohit |
Smed |
Låt oss titta på ett annat exempel. Antag att vi vill hitta alla fem bokstäverna som slutar med understrängen 'it'
SELECT * FROM student_names WHERE name LIKE '___it'
Här har vi använt 3 ‘_’ (understreck) och det faktiska underlag som måste matchas.
Produktion:
namn |
---|
Ankit |
Mohit |
Smed |
Kombinera% och _ mönstermatcher
I det här avsnittet kommer vi att diskutera hur vi kan matcha matchningsmönstret% och _ mönster.
qa chef intervju frågor svar pdf
Anta att vi vill hitta alla namn som har 'it' -strängning och kan ha exakt 2 tecken efter ordet 'it'
SELECT * FROM student_names WHERE name LIKE '%it_'
Här har vi kombinerat både% och _ matchmönster för att hitta exakt matchning.
Produktion:
namn |
---|
Smed |
Nikita |
Använd INTE LIKE
NOT LIKE är den exakta negationen av vad LIKE-operatören returnerar. dvs. det kommer att returnera alla poster / rader som inte matchar mönstrets matchningsuttryck.
Exempel: Antag att vi vill hitta alla namn som inte är fyra tecken långa.
SELECT * FROM student_names WHERE name NOT LIKE '____'
Produktion:
namn |
---|
Ankit |
Smed |
Nikita |
Mohit |
Du kan se i ovanstående utdata, den returnerar endast de namn som inte är fyra tecken långa.
Använda MySQL LIKE With ESCAPE Character
Här ser vi hur vi kan använda ESCAPE-tecken tillsammans med mönstermatcharen.
Anta att i en hypotetisk situation har vi namn som faktiskt innehåller% och _ tecken och vi vill hitta dessa namn, då måste vi matcha% & _. Detta kan uppnås med hjälp av en escape-karaktär.
Notera: Standardvärdet för escape-karaktären är '' (Backslash)
Lägg till lite data i studentnamnstabellerna som innehåller namn med% och _ tecken.
INSERT INTO student_names VALUES('Darre%n'),('Julia_Roberts'),('Dane_Sherman%');
Nedan följer några exempel för att förstå detta bättre.
# 1) Hitta alla namn som har ett% -tecken.
SELECT * FROM student_names WHERE name LIKE '%\%%'
Produktion:
namn |
---|
Darre% n |
Dane_Sherman% |
#två) Hitta alla namn som har ett _-tecken
SELECT * FROM student_names WHERE name LIKE '%\_%'
Produktion:
namn |
---|
Julia_Roberts |
Dane_Sherman% |
I båda exemplen ovan kan du se att vi har använt en escape-karaktär för att nämna% och _-tecknen - dvs. för att matcha ett% -tecken i sig har vi använt en escape-karaktär före% -tecknet - dvs som '\%'
Använd en flyktkaraktär efter eget val
Låt oss nu försöka utöka det föregående exemplet.
MySQL låter dig ange ditt eget ESCAPE-tecken som MySQL ska använda när du kör sökmönstret.
Låt oss försöka uppdatera Escape-karaktären till '!' Istället för standardvärdet ''
SELECT * FROM student_names WHERE name LIKE '%!_%' ESCAPE '!'
Produktion:
namn |
---|
Julia_Roberts |
Dane_Sherman% |
I exemplet ovan har vi åsidosatt flyktecknet till '!' Och använt detsamma i mönstermatcharen '%! _%' - där vi vill matcha ett '_' -tecken i namnet.
Vanliga frågor
F # 1) Vad betyder %% i SQL?
Svar: '%%' kommer inte att matcha något specifikt. Det motsvarar bara att ha 1% karaktär. Om du vill matcha ”%” -tecknet i kolumnvärdet kan du använda det med ett escape-tecken som har standardvärdet ”.
Antag att du vill matcha ett kolumnvärde som har ett ”%” -tecken, du kan skriva mönstermatchning som - Gilla ”% %%” (märk en extra bakåtvänd snedstreck före det mellersta procentsatsen (%).
F # 2) Vad är ett jokertecken i MySQL?
Svar: MySQL LIKE Operator arbetar med två jokertecken i MySQL för att uppnå olika sätt att mönstra matchning.
Dessa är:
- % - Detta skulle matcha valfritt antal tecken (inklusive noll)
- _ - Det här skulle matcha exakt en karaktär
F # 3) Hur skriver jag en LIKE-fråga i MySQL?
Svar: LIKE är en enkel operatör som vanligtvis används tillsammans med WHERE-klausulen i en SELECT-fråga. Den används för att matcha kolumnvärdena mot det angivna mönstret.
Exempel: Antag att det finns en tabell med anställda_detaljer, och den har en kolumn med namnet adress som innehåller husnr, gatunamn etc. Du vill ta reda på alla anställda som har gatan definierad som 'Oxford Lane' som sin adress.
Vi kan använda LIKE-operatören för att skriva en sådan fråga.
SELECT * FROM employee_details WHERE address LIKE '%Oxford Lane%'
Vänligen notera att strängmönstren är fallet okänslig samtidigt som det matchas mot det angivna matchningsuttrycket.
F # 4) Hur specificerar jag en annan Escape-karaktär tillsammans med LIKE Operator?
Svar: MySQL ger ett sätt att ange en anpassad Escape-karaktär som skulle åsidosätta standardtypen, dvs.
Här är ett exempel som skulle ändra escape-karaktären till '!' För frågekörningen.
SELECT * FROM employee_details WHERE address LIKE '%!_%' ESCAPE '!'
I ovanstående fråga har vi nämnt '!' Som escape-karaktär och använt detsamma i matchningsuttrycket.
F # 5) Hur matchar jag en faktisk% eller _ karaktär med LIKE Operator?
vad är integrationstest med exempel
Svar: Tecknen som% och _ är speciella jokertecken som när de verkligen måste matchas som en del av strängen bör undvikas.
Standardflyktecknet är '' och bör användas precis innan jokerteckenet nämns.
Anta att vi vill matcha ”_” -tecknet mot ett visst kolumnvärde, då kan vi skriva matchningsuttrycket som - TYCKA OM '%\_%'
Slutsats
I denna handledning lärde vi oss om de olika sätten på vilka vi kan använda LIKE-operatören (eller den negerade versionen, dvs. INTE LIKE).
Vi diskuterade även de stödda jokertecken som stöds, dvs _ och%, och hur kan de undvikas om de behöver vara en del av strängen för att söka / matcha.
LIKE-operatören är en kraftfull funktionalitet som tillhandahålls av MySQL och används vanligtvis för att filtrera poster medan du frågar efter stora datamängder.
Rekommenderad läsning
- MySQL Skapa vyhandledning med kodexempel
- MySQL UNION - Omfattande handledning med fackliga exempel
- MySQL Skapa tabellhandledning med exempel
- MySQL Insert In Table - Insert Statement Syntax & Exempel
- Unix Cat Command Syntax, alternativ med exempel
- C # Regex Tutorial: Vad är ett C # Regular Expression
- C ++ regex Handledning: Regelbundna uttryck i C ++ med exempel
- Java Regex-handledning med exempel på reguljära uttryck