mysql like tutorial with syntax
Denne tutorial forklarer mønstermatchning ved hjælp af MySQL LIKE-operatøren:
Mønstermatchning er en vigtig funktion i næsten alle programmeringssprog som - Java / C # / Python osv., Som for det meste udnytter brugen af Regular Expressions til mønstermatchning mod en given strenginput.
MySQL giver en brugervenlig operatør kaldet LIKE, som kan bruges til at matche strengværdierne med bestemte mønstre og er nyttige til forespørgsel på store datasæt.
Hvad du lærer:
MySQL LIKE
Syntaks:
LIKE-operatøren bruges sammen med WHERE-klausulen i en SELECT-forespørgsel.
I en simpel forespørgsel ser syntaksen ud som nedenfor.
SELECT {column_names} (*) FROM {table_name} WHERE {column_with_string_value} LIKE {match_pattern}
Forskellige komponenter i denne syntaks forklares som følger:
- {kolonnenavne}: Dette er kolonnenavnene, der skal vises som output fra SELECT-forespørgslen. Disse værdier kan være * til at vælge alle kolonnerne eller kommaseparerede navne på de enkelte kolonner.
- {tabelnavn}: Dette er navnet på den tabel, hvor forespørgslen skal udføres.
- {column_with_string_value}: Dette er den kolonne, hvis værdier skal udføres i forhold til det angivne mønster. Bemærk, at enhver sammenligning udføres på en kolonne, der kan konverteres til streng.
- {match_pattern}: Dette er det matchudtryk, som kolonneværdier skal sammenlignes med. En prøve af matchmønstre kan være - ‘ SM% '. Dette svarer til alle kolonneværdier, der starter med SM. Eksempel: SMART, LUKT, RØG osv.
I lighed med denne forespørgsel kan LIKE-operatoren bruges selv med komplekse forespørgsler med JOINS osv., Da LIKE kun er en sammenligningsoperator og kan bruges hvor som helst sammenligning af kolonneværdier er mulige.
Bemærk: I lighed med LIKE kan vi også bruge dens negerede variant, som er 'NOT LIKE'. Så i dette tilfælde returnerer forespørgsler med 'NOT LIKE' i stedet for at returnere matchende resultater resultater, der ikke matcher.
MySQL-matchmønstre
LIKE Operator kan bruges sammen med 2 typer mønstre. Disse er anført i nedenstående tabel:
Mønster | |
---|---|
% (Procent) | Match et hvilket som helst antal tegn (inklusive slet ingen tegn) |
_ (Understregning) | Matcher et enkelt tegn |
Nu vil vi se nogle eksempler, der bruger begge mønstre.
% Match mønster
% mønster bruges, når du vil matche 0 eller flere tegn efter eller før placeringen.
For eksempel: hvis du vil matche en streng 'it' fra en kolonne med medarbejdernavne. Antag at der er navne som - Amit, Anchit, Arpit, Nikita, Smith osv. Vi kan se, at alle navnene har 'it' -strengen. Men deres positionering er anderledes.
Antag, at kolonnenavnet er navne og tabelnavnet er studenternavne.
Brug følgende eksempler på oprettelse af scripts til at udfylde databasen:
CREATE TABLE student_names (name VARCHAR(100)); INSERT INTO student_names VALUES('Amit'),('Ankit'),('Smith'),('Nikita'),('Mohit');
Lad os se, hvordan vi kan bruge% Match-mønster.
SELECT * FROM student_names WHERE name LIKE '%it%'
Produktion:
navn |
---|
Amit |
Ankit |
Smith |
Nikita |
Mohit |
Hvad dette nu betyder er, at det kan matche en streng, der har 'it' -strengen på ethvert sted, og der kan være et hvilket som helst antal tegn før og efter kampen. Du kan se, at alle de matchende navne returneres som output.
Omskriv forespørgslen for kun at have de navne, der matcher, der slutter med 'it' -strengen.
SELECT * FROM student_names WHERE name LIKE '%it'
Så her har vi fjernet det efterfølgende '%' tegn og har placeret 'it' strengen i slutningen. Dette mønster tillader et hvilket som helst antal tegn før 'it', men strengen skal ende med 'it' -strengen.
Output af ovenstående forespørgsel:
navn |
---|
Amit |
Ankit |
Mohit |
Bemærk: Det er vigtigt at bemærke her, at det mønster, der er nævnt ved hjælp af '%' -tegnet, ikke skelnes mellem store og små bogstaver. Så for ovenstående eksempel, i stedet for '% it', kunne vi have brugt '% IT' eller '% It', ville outputen stadig have været den samme.
_Match mønster
Lad os nu se på, hvordan vi kan bruge '_' matchmønsteret. Vi ved, at '_' tillader nøjagtigt et tegn.
Antag, at vi vil forespørge på alle de 5 bogstavsnavne fra den samme tabel (student_navne).
For at bruge '_' mønster matcher i dette tilfælde har vi angivet fem _ (understregninger) sammen med LIKE mønster, der kun matcher de navne, der er 5 tegn lange.
SELECT * FROM student_names WHERE name LIKE '_____'
Produktion:
navn |
---|
Ankit |
Mohit |
Smith |
Lad os se på et andet eksempel. Antag, at vi vil finde alle 5 bogstaver, der slutter med understrenget 'it'
SELECT * FROM student_names WHERE name LIKE '___it'
Her har vi brugt 3 '_' (understregninger) og den aktuelle substring, der skal matches.
Produktion:
navn |
---|
Ankit |
Mohit |
Smith |
Kombinerer% og _ mønster matcher
I dette afsnit vil vi diskutere, hvordan vi kan matche% og _ mønster matcherne sammen.
bedste task manager til Windows 10
Antag, at vi vil finde alle de navne, der har 'it' -streng og kan have nøjagtigt 2 tegn efter ordet 'it'
SELECT * FROM student_names WHERE name LIKE '%it_'
Her har vi kombineret både% og _ match mønstre for at finde det nøjagtige match.
Produktion:
navn |
---|
Smith |
Nikita |
Brug IKKE LIKE
NOT LIKE er den nøjagtige benægtelse af, hvad LIKE-operatøren returnerer. dvs. det returnerer alle poster / rækker, der ikke matcher mønster-match-udtrykket.
Eksempel: Antag, at vi vil finde alle de navne, der ikke er 4 tegn lange.
SELECT * FROM student_names WHERE name NOT LIKE '____'
Produktion:
navn |
---|
Ankit |
Smith |
Nikita |
Mohit |
Du kan se i ovenstående output, den returnerer kun de navne, der ikke er 4 tegn lange.
Brug af MySQL LIKE med ESCAPE-karakter
Her vil vi se, hvordan vi kan bruge ESCAPE-tegn sammen med mønstermatcheren.
Antag, at vi i en hypotetisk situation har navne, der faktisk indeholder% og _ tegn, og vi vil finde disse navne, så skal vi faktisk matche% & _. Dette kan opnås ved hjælp af en flugtkarakter.
Bemærk: Standardværdien af flugttegnet er '' (Backslash)
Føj nogle data til tabellerne student_navne, der indeholder navne med% og _ tegn.
INSERT INTO student_names VALUES('Darre%n'),('Julia_Roberts'),('Dane_Sherman%');
Nedenfor er nogle eksempler for at forstå dette bedre.
# 1) Find alle de navne, der har et% tegn.
SELECT * FROM student_names WHERE name LIKE '%\%%'
Produktion:
navn |
---|
Darre% n |
Dane_Sherman% |
#to) Find alle navne, der har et _-tegn
SELECT * FROM student_names WHERE name LIKE '%\_%'
Produktion:
navn |
---|
Julia_Roberts |
Dane_Sherman% |
I begge ovenstående eksempler kan du se, at vi har brugt et escape-tegn til at nævne% og _ tegnene - dvs. for at matche et% tegn i sig selv har vi brugt et escape-tegn før% -tegnet - dvs. som '\%'
Brug af en flugtkarakter efter eget valg
Lad os nu prøve at udvide det forrige eksempel.
MySQL giver dig mulighed for at specificere dit eget ESCAPE-tegn, som MySQL skal bruge, mens du kører mønstermatchning.
Lad os prøve at opdatere Escape-tegnet til '!' I stedet for standardværdien ''
SELECT * FROM student_names WHERE name LIKE '%!_%' ESCAPE '!'
Produktion:
navn |
---|
Julia_Roberts |
Dane_Sherman% |
I ovenstående eksempel har vi tilsidesat escape-tegnet til '!' Og brugt det samme i mønstermatcheren '%! _%' - hvor vi vil matche et '_' tegn i navnet.
Ofte stillede spørgsmål
Q # 1) Hvad betyder %% i SQL?
Svar: ‘%%’ matcher ikke noget specifikt. Det svarer til bare at have 1% karakter. Hvis du vil matche selve '%' -tegnet i kolonneværdien, kan du bruge det med et escape-tegn, der har standardværdien '.
Antag, at du vil matche en kolonneværdi med et '%' tegn, du kan skrive mønstermatch som - LIGE '% %%' (bemærk en ekstra tilbageslag før det midterste procent (%) tegn.
Q # 2) Hvad er et wildcard i MySQL?
Svar: MySQL LIKE Operator arbejder med 2 jokertegn i MySQL for at opnå forskellige måder at mønstre matche på.
Disse er:
- % - Dette ville matche et hvilket som helst antal tegn (inklusive nul)
- _ - Dette ville matche nøjagtigt et tegn
Spørgsmål nr. 3) Hvordan skriver jeg en LIKE-forespørgsel i MySQL?
Svar: LIKE er en simpel operatør, der generelt bruges sammen med WHERE-klausulen i en SELECT-forespørgsel. Det bruges til at matche kolonneværdierne med det angivne mønster.
Eksempel: Antag, at der er en tabel med medarbejderdetaljer, og den har en kolonne med navnet adresse, der indeholder husnr., Gadenavn osv. Du vil finde ud af alle medarbejdere, der har gaden defineret som 'Oxford Lane' som deres adresse.
Vi kan bruge LIKE-operatøren til at skrive en sådan forespørgsel.
SELECT * FROM employee_details WHERE address LIKE '%Oxford Lane%'
Bemærk, at strengemønstrene er store og små bogstaver mens det matches med det angivne matchudtryk.
Spørgsmål nr. 4) Hvordan specificeres en anden Escape-karakter sammen med LIKE Operator?
Svar: MySQL giver en måde at specificere et brugerdefineret Escape-tegn, der tilsidesætter standardtegnet, dvs.
informatica powercenter interview spørgsmål og svar
Her er et eksempel, der vil ændre flugttegnet til '!' For udførelse af forespørgslen.
SELECT * FROM employee_details WHERE address LIKE '%!_%' ESCAPE '!'
I ovenstående forespørgsel har vi nævnt '!' Som flugttegnet og brugt det samme i matchudtrykket.
Spørgsmål nr. 5) Hvordan matches en faktisk% eller _ karakter ved hjælp af LIKE Operator?
Svar: Tegnene som% og _ er specielle jokertegn, som når de faktisk skal matches som en del af strengen, skal undslippes.
Standard escape-tegnet er '' og skal bruges lige før nævner jokertegnet.
Antag, at vi vil matche '_' -tegnet med en given kolonneværdi, så kan vi skrive matchudtrykket som - SYNES GODT OM '%\_%'
Konklusion
I denne vejledning lærte vi om de forskellige måder, hvorpå vi kan bruge LIKE-operatøren (eller den negerede version, dvs. IKKE LIKE).
Vi diskuterede også de understøttede jokertegn, dvs. _ og%, og hvordan kan de undslippes, hvis de skal være en del af den streng, der skal søges / matches.
LIKE-operatøren er en stærk funktionalitet, der leveres af MySQL og bruges generelt til at filtrere poster, mens der spørges til store datasæt.
Anbefalet læsning
- MySQL Opret visningsvejledning med kodeeksempler
- MySQL UNION - Omfattende vejledning med EU-eksempler
- MySQL Opret tabelvejledning med eksempler
- MySQL indsæt i tabel - Indsæt erklæringens syntaks og eksempler
- Unix Cat Command Syntax, indstillinger med eksempler
- C # Regex-vejledning: Hvad er en C # regulær udtryk
- C ++ regex Selvstudie: Regulære udtryk i C ++ med eksempler
- Java Regex-tutorial med eksempler på regulært udtryk