mysql substring substring_index functions with examples
Lær om MySQL SUBSTRING og SUBSTRING_INDEX-funktioner og dets anvendelse med flere eksempler:
MySQL Substring-funktion bruges til at udtrække en substring eller delstreng mod inputstrengen. Som navnet antyder, fungerer Substring-funktionen på en strengindgang og returnerer en mindre understreng mod de angivne indstillinger.
Vi lærer også om en anden variant af SUBSTRING kaldet SUBSTRING_INDEX. Denne funktion accepterer tegn eller strengværdi som afgrænser og udfører en søgning mod den givne afgrænsningsværdi.
Vi vil også se på nogle eksempler for at forstå, hvordan disse funktioner kan bruges, når der spørges til data som en del af SELECT-forespørgslerne.
Hvad du lærer:
MySQL SUBSTRING
Syntaks:
// format 1 SELECT SUBSTRING('{String Value}', {start_index}, {count}); // format 2 SELECT SUBSTRING('{String Value}'FROM {start_index} for {count});
Der er to måder, hvorpå vi kan bruge SUBSTRING-funktionen.
Lad os forstå syntaksen, inden vi dykker ned i eksemplerne.
- {Strengværdi}: Dette er den aktuelle strengværdi eller kolonnenavnet, der indeholder den streng, der skal bearbejdes.
- {start_index}: start_index er indekset fra venstre eller højre, hvor Substring startes. Værdierne kan være positive eller negative afhængigt af, om vi vil udtrække streng fra henholdsvis venstre eller højre side. Dette vil blive mere tydeligt med eksemplerne.
- {tælle}: Dette felt er valgfrit og specificerer antallet af tegn fra start_index felt, hvor substrengen skal udvindes. Hvis ikke nævnt, så starter hele strengen fra matchningen start_index ville blive returneret.
Format2 er en variation af format1 bortset fra at det er mere læsbart ved hjælp af nøgleord FRA og FOR. Så her bruges FROM før der nævnes start_index værdi, og FOR bruges, før der nævnes tælle .
Lad os se nogle eksempler for at forstå MySQL SUBSTRING-funktionen.
Lad os tage strengindgangsværdien som Hjælp til test af software
Stringindekserne ser ud som nedenstående tabel
en | to | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | elleve | 12 | 13 | 14 | femten | 16 | 17 | 18 | 19 | tyve | enogtyve |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
S | eller | f | t | i | til | r | er | T | er | s | t | jeg | n | g | H | er | l | s |
MySQL SUBSTRING Eksempel
Uden tæller
Antag, at vi vil udtrække hjælpeteksten fra ovenstående streng - H har et indeks på 18
Lad os se forespørgslen nedenfor:
SELECT SUBSTRING('Software Testing Help', 18) as extracted_string; SELECT SUBSTRING('Software Testing Help' FROM 18) as extracted_string; // Output Help
Det er vigtigt at bemærke her, at vi ikke har nævnt nogen værdi for tælle, men vi får stadig den rigtige streng - det er fordi, når tællingen udelades, returneres hele strengen startende fra det givne indeks.
I dette tilfælde, hvis vi nævner startindekset, for eksempel, for 'T' (indeks 10)
SELECT SUBSTRING('Software Testing Help', 10) as extracted_string; //Output Testing Help
Som du kan se ovenfor, indeholder output hele teksten 'Testing Help'.
Med Count
Lad os nu se på et eksempel, hvor vi vil nævne antallet af tegn, der skal returneres.
Antag, at vi bare vil udtrække ordet 'Testing' fra String 'Software Testing Help'. Så kan vi nævne tælle som - 7 (hvilket er længden af ordet 'Testing)
Lad os se forespørgslen nedenfor:
SELECT SUBSTRING('Software Testing Help', 10, 7) as extracted_string; SELECT SUBSTRING('Software Testing Help' FROM 10 FOR 7) as extracted_string; //Output Testing
Her har vi beskrevet både startindekset og antallet af tegn som en del af forespørgslen for at få det krævede resultat.
Med negative indeksværdier
Indtil videre har vi for de eksempler, vi har set, specificeret start_index som en positiv værdi.
Vi kan også angive start_index som negativ, hvilket ganske enkelt betyder, at i stedet for at tælle fra venstre, vil MySQL-motoren forsøge at tælle startindekset fra slutningen af strengen.
Lad os se et eksempel
For vores streng 'Software Testing Help', lad os tilføje en række nedenfor for at identificere de rigtige indekser
L | en | to | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | elleve | 12 | 13 | 14 | femten | 16 | 17 | 18 | 19 | tyve | enogtyve |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
S | eller | f | t | i | til | r | er | T | er | s | t | jeg | n | g | H | er | l | s | |||
R | enogtyve | tyve | 19 | 18 | 17 | 16 | femten | 14 | 13 | 12 | elleve | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | to | en |
Så den nederste række her repræsenterer de rigtige indekser. Antag nu, at vi vil udtrække ordet 'Testing' ved hjælp af MySQL SUBSTRING-funktionen med det rigtige indeks.
Det højre indeks for 'T' i test er 12 (og det venstre indeks er 10)
SELECT SUBSTRING('Software Testing Help', -12, 7) as extracted_string; SELECT SUBSTRING('Software Testing Help' FROM -12 FOR 7) as extracted_string; //Output Testing
Som du kan se i eksemplet ovenfor, nævner de rigtige indekser som en negativ værdi stadig det samme resultat.
Indeks uden for grænser
Prøv nu nogle negative scenarier
- Når start_index angivet ikke eksisterer: dvs. det angivne indeks er uden for grænserne, så output ville være tomt.
SELECT SUBSTRING('Software Testing Help', 30, 2) as extracted_string; //output Empty String
- Når det angivne antal er negativt eller mere end strengens samlede længde, vil output kun være resten af strengen (start den angivne start_index).
SELECT SUBSTRING('Software Testing Help', 5, 100) as extracted_string; //output ware Testing Help
Du kan se ovenfor, her blev antallet nævnt som 100, men strengen er kun 21 tegn lang.
- Lad os prøve endnu et scenario med antallet nævnt som negativt.
SELECT SUBSTRING('Software Testing Help', 5, -20) as extracted_string; //output Empty String
Også her vil der ikke være nogen fejl, og der vil kun være en tom streng, der ville være output.
MySQL SUBSTRING_INDEX
Dette er en anden variant af MySQL SUBSTRING-funktionen.
Her, i stedet for at nævne den aktuelle værdi af start_index, kan vi simpelthen nævne tegnet og indekset og antallet af gange, hvor skilleafgrænsningen skal søges, før output returneres.
Et vigtigt punkt at bemærke her er SUBSTRING_INDEX
MySQL SUBSTRING INDEX-funktion:
SUBSTRING_INDEX({StringValue/Column},delimiter,n)
- {StringValue / Column}: Faktisk strenginput eller kolonnenavnet i SELECT-forespørgslen.
- Afgrænser: Det er tegnet eller understrenget, der skal ledes efter, for at udtrække den resterende streng som output. Denne værdi er store og små bogstaver, så den skal specificeres, som den vises i den aktuelle streng.
- n: Optælling af afgrænser - dvs. antallet af gange, hvor afgrænseren skal søges inden returnering af strengen.
Lad os forstå dette ved hjælp af nogle eksempler.
Vi bruger den samme streng 'Software Testing Help' som vores inputstreng til alle de eksempler, som vi skal diskutere i det næste afsnit nedenfor.
Søger efter et tegn
Mens du søger efter karakter 'T', vil output være 'Software'. Bemærk, at den ekstra plads efter ordet Software også vil blive inkluderet.
SELECT SUBSTRING_INDEX('Software Testing Help', 'T', 1) as extracted_string; //Output Software
Søg efter et tegn, der vises mere end én gang. Her er det - 'e'
SELECT SUBSTRING_INDEX('Software Testing Help', 'e', 1) as extracted_string; //Output Softwar
I dette eksempel: da vi har specificeret antallet som 1, vil output være String indtil den første forekomst af ‘e’ er nået.
Skift optællingen til 2 for det samme tegn 'e'.
SELECT SUBSTRING_INDEX('Software Testing Help', 'e', 2) as extracted_string; //Output Software T
Nu kan vi se, at Substring op til den anden forekomst af karakter 'e' returneres.
Tag et andet eksempel for at forstå, at SUBSTRING INDEX er store og små bogstaver. Lad os prøve med bogstavet 't' i stedet for 'T'
bedste youtube video downloader til pc
SELECT SUBSTRING_INDEX('Software Testing Help', 't', 1) as extracted_string; //Output Sof
Søger efter en streng
Vi kan bruge SUBSTRING INDEX-funktionen til at søge i en streng i stedet for et tegn. Lad os søge efter ordet 'Testing'.
SELECT SUBSTRING_INDEX('Software Testing Help', 'Testing', 1) as extracted_string; //Output Software
Søger efter en ikke-eksisterende streng
Brug af SUBSTRING INDEX med en streng, der ikke findes.
SELECT SUBSTRING_INDEX('Software Testing Help', 'abc', 1) as extracted_string; //Output Software Testing Help
Outputtet kan være lidt uventet her. Men da MySQL-motoren ikke kan finde det nødvendige match, returnerer den hele strengen som output.
Søger efter karakter eller streng i omvendt rækkefølge
På samme måde som SUBSTRING-funktionen tillader SUBSTRING INDEX-funktionen også at have antallet nævnt som negative tal. Dette betyder, i stedet for at krydse fra venstre mod højre, vil MySQL-motoren forsøge at finde et match fra højre til venstre.
Forstå dette ved hjælp af nogle eksempler.
SELECT SUBSTRING_INDEX('Software Testing Help', 'T', -1) as extracted_string; //Output esting Help
I ovenstående eksempel kan du se, at afgrænseren er 'T', mens antallet er -1. Så output ville være Substring fra højre, indtil den første match for bogstavet 'T' er opnået.
Anvendelser af MySQL SUBSTRING-funktion
Vi bruger generelt MySQL-strengfunktionerne, mens vi spørger til data fra 1 eller flere tabeller. Det kan bruges til at opdele værdier i en kolonne eller bare for at vise de væsentlige værdier efter behov.
Eksempel: Antag, at vi har en medarbejderoplysningstabel bestående af id, navn og adresse.
Og adressekolonnen er af format - {HouseNo}, {StreetName}
Nedenfor er scriptet til at oprette en tabel og indsætte dummy-data:
CREATE TABLE employee_details (name VARCHAR(100), address VARCHAR(100), age INT); INSERT INTO employee_details values ('Akash Malhotra', '22,Defence Colony', 24), ('Steve Wilson','12/4,Wilson Street',28), ('Monica Singh','190,Smith Lane',32);
Brug MySQL SUBSTRING-funktionen til at have husnummer ekstraheret fra adressekolonnen som vist nedenfor.
SELECT name, SUBSTRING_INDEX(address,',',1) as house_no, address, age from employee_details
Produktion:
navn | hus_nr | adresse | alder |
---|---|---|---|
Akash malhotra | 22 | 22, forsvarskoloni | 24 |
Steve Wilson | 12/4 | 12/4, Wilson Street | 28 |
Monica Singh | 190 | 190, Smith Lane | 32 |
I ovenstående forespørgsel kan du se, at vi har brugt SUBSTRING_INDEX-funktionen til at hente husnummeret fra adressekolonnen, og vi har brugt ',' som afgrænser.
I lighed med dette kan der være mange applikationer, hvor vi gerne vil udtrække strengen for at hente meningsfuld information fra en større strengindgang eller kolonneværdien.
Ofte stillede spørgsmål
Q # 1) Hvilken MySQL-funktion returnerer positionen for den første forekomst af en SUBSTRING i strengen?
Svar: MySQL giver 2 funktioner til at returnere eller udtrække en SUBSTRING ud af en given streng- eller kolonneværdi.
- SUBSTRING
Eksempel:
SELECT SUBSTRING('Test Input',1,4) as extracted_string; // Output Test
- SUBSTRING INDEX
Eksempel:
SELECT SUBSTRING_INDEX('Test Input','t',1) as extracted_string; //Output Tes
Q # 2) Hvad er SUBSTRING_INDEX i MySQL?
Svar: SUBSTRING_INDEX-funktionen er en variant af SUBSTRING-funktionen. Mens du i den normale SUBSTRING-funktion skal nævne indekset som et tal i inputstrengen, kan du for SUBSTRING_INDEX-funktionen nævne enten et tegn eller en mindre understreng, der skal søges efter.
Foreslået læsning = >> MySQL COUNT vejledning
Konklusion
I denne vejledning har vi lært om MySQL SUBSTRING og SUBSTRING_INDEX-funktioner. Begge funktioner udtrækker en substring mod den givne inputstreng, men fungerer på en lidt anden måde.
SUBSTRING forventer indekset som de faktiske tal, mens SUBSTRING_INDEX kan have afgrænsningen angivet som et tegn eller en strengværdi, og derefter kan MySQL Engine trække ud mod den krævede matchende streng eller karakter.
Begge disse funktioner bruges i vid udstrækning, hvor en søjle med flere informationsstykker kan udvindes i underkolonner ved hjælp af strengekstraktionslogik baseret på passende krav.
Anbefalet læsning
- C # String Tutorial - Strengmetoder med kodeeksempler
- Java substring () Metode - Vejledning med eksempler
- Java String indeholder () Metodevejledning med eksempler
- Java-streng sammenlignet med metode med programmeringseksempler
- Strengfunktioner i C ++: getline, substring, strenglængde og mere
- C ++ strengkonverteringsfunktioner: streng til int & int til streng
- Python-strengfunktioner
- MySQL CONCAT og GROUP_CONCAT-funktioner med eksempler