mysql substring substring_index functions with examples
Lær om funksjonene MySQL SUBSTRING og SUBSTRING_INDEX og bruken av den med flere eksempler:
MySQL Substring-funksjonen brukes til å trekke ut en understreng eller delstreng mot inngangsstrengen. Som navnet antyder, fungerer Substring-funksjonen på en strenginngang og returnerer en mindre substring mot de angitte alternativene.
Vi vil også lære om en annen variant av SUBSTRING kalt SUBSTRING_INDEX. Denne funksjonen godtar tegn eller strengverdi som skilletegn og utfører et søk mot den angitte skillelinjen.
Vi vil også se på noen eksempler for å forstå hvordan disse funksjonene kan brukes mens du spør etter data som en del av SELECT-spørringene.
Hva du vil lære:
MySQL SUBSTRING
Syntaks:
// format 1 SELECT SUBSTRING('{String Value}', {start_index}, {count}); // format 2 SELECT SUBSTRING('{String Value}'FROM {start_index} for {count});
Det er to måter vi kan bruke SUBSTRING-funksjonen på.
La oss forstå syntaksen før vi dykker ned i eksemplene.
- {Strengverdi}: Dette er den faktiske strengverdien eller kolonnenavnet som inneholder strengen som skal bearbeides.
- {start_index}: start_index er indeksen fra venstre eller høyre der Substring skulle startes. Verdiene kan være positive eller negative, avhengig av om vi ønsker å trekke ut streng fra henholdsvis venstre eller høyre side. Dette vil bli tydeligere med eksemplene.
- {telle}: Dette feltet er valgfritt og spesifiserer antall tegn fra start_index felt der understrengen må trekkes ut for. Hvis ikke nevnt, så starter hele strengen fra matchingen start_index ville bli returnert.
Format2 er en variant av format1 bortsett fra at det er mer lesbart ved hjelp av nøkkelord FRA og FOR. Så her brukes FROM før du nevner start_index verdi, og FOR brukes før du nevner telle .
La oss se noen eksempler for å forstå MySQL SUBSTRING-funksjonen.
La oss ta verdien for strenginngang som Programvare Testing Hjelp
Strengindeksene vil se ut som under tabellen
1 | to | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | elleve | 12 | 1. 3 | 14 | femten | 16 | 17 | 18 | 19 | tjue | tjueen |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
S | eller | f | t | i | til | r | er | T | er | s | t | Jeg | n | g | H | er | l | s |
MySQL SUBSTRING Eksempel
Uten greve
Anta at vi ønsker å trekke ut hjelpeteksten fra strengen ovenfor - H har en indeks på 18
La oss se spørringen nedenfor:
SELECT SUBSTRING('Software Testing Help', 18) as extracted_string; SELECT SUBSTRING('Software Testing Help' FROM 18) as extracted_string; // Output Help
Det er viktig å merke seg her at vi ikke har nevnt noen verdi for telle, men vi får fremdeles riktig streng - dette er fordi når tellingen utelates, returneres hele strengen som starter fra den gitte indeksen.
I dette tilfellet, hvis vi nevner startindeksen, for eksempel, for ‘T’ (indeks 10)
SELECT SUBSTRING('Software Testing Help', 10) as extracted_string; //Output Testing Help
Som du kan se ovenfor, inneholder utdata hele teksten ‘Testing Help’.
Med Count
La oss nå se på et eksempel der vi vil nevne antall tegn som skal returneres.
Anta at vi bare vil trekke ut 'Testing' ordet fra String 'Software Testing Help'. Da kan vi nevne telle som - 7 (som er lengden på ordet ‘Testing)
La oss se spørringen 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 startindeksen og antall tegn som en del av spørringen for å få det nødvendige resultatet.
Med negative indeksverdier
Så langt, for eksemplene vi har sett, har vi spesifisert start_index som en positiv verdi.
Vi kan også spesifisere start_index som negativ, noe som ganske enkelt betyr at i stedet for å telle fra venstre, vil MySQL-motoren prøve å telle startindeksen fra slutten av strengen.
La oss se et eksempel
For vår String ‘Software Testing Help’, la oss legge til en rad nedenfor for å identifisere de rette indeksene
L | 1 | to | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | elleve | 12 | 1. 3 | 14 | femten | 16 | 17 | 18 | 19 | tjue | tjueen |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
S | eller | f | t | i | til | r | er | T | er | s | t | Jeg | n | g | H | er | l | s | |||
R | tjueen | tjue | 19 | 18 | 17 | 16 | femten | 14 | 1. 3 | 12 | elleve | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | to | 1 |
Så den nederste raden her representerer de rette indeksene. Anta at vi ønsker å trekke ut ordet ‘Testing’ ved hjelp av MySQL SUBSTRING-funksjonen med riktig indeks.
Høyre indeks for 'T' i testing er 12 (og 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, vil det å nevne de rette indeksene som en negativ verdi fremdeles gi det samme resultatet.
Indeks utenfor grensene
Prøv nå noen negative scenarier
- Når angitt start_index ikke eksisterer: dvs. at den spesifiserte indeksen er utenfor grensene, vil utdataene være tomme.
SELECT SUBSTRING('Software Testing Help', 30, 2) as extracted_string; //output Empty String
- Når antallet som er spesifisert er negativ eller mer enn den totale lengden på strengen, vil utdataene bare være resten av strengen (starter start_indeks spesifisert).
SELECT SUBSTRING('Software Testing Help', 5, 100) as extracted_string; //output ware Testing Help
Du kan se ovenfor, her ble tellingen nevnt som 100, men strengen er bare 21 tegn lang.
- La oss prøve et annet scenario med tellingen nevnt som negativ.
SELECT SUBSTRING('Software Testing Help', 5, -20) as extracted_string; //output Empty String
Også her vil det ikke være noen feil, og det vil bare være en tom streng som vil være utdata.
MySQL SUBSTRING_INDEX
Dette er en annen variant av MySQL SUBSTRING-funksjonen.
Her, i stedet for å nevne den faktiske verdien av start_index, kan vi ganske enkelt nevne tegnet og indeksen og antall ganger det må søkes avgrenseren før vi returnerer utdataene.
Et viktig poeng å merke seg her er SUBSTRING_INDEX
MySQL SUBSTRING INDEX-funksjon:
SUBSTRING_INDEX({StringValue/Column},delimiter,n)
- {StringValue / Column}: Faktisk strenginngang eller kolonnenavnet i SELECT-spørringen.
- Avgrenser: Det er tegnet eller undergrunnen som må leter etter, for å trekke ut den gjenværende strengen som utdata. Denne verdien er mellom store og små bokstaver, så den bør spesifiseres slik den vises i selve strengen.
- n: Antall skilletegn - dvs. antall ganger det skal søkes på skillet før du returnerer strengen.
La oss forstå dette ved hjelp av noen eksempler.
Vi vil bruke samme streng ‘Software Testing Help’ som vår inngangsstreng for alle eksemplene vi skal diskutere i neste avsnitt nedenfor.
Søker etter et tegn
Mens du søker etter karakteren 'T', vil utdataene være 'Programvare'. Legg merke til at den ekstra plassen etter ordet programvare også blir inkludert.
SELECT SUBSTRING_INDEX('Software Testing Help', 'T', 1) as extracted_string; //Output Software
Søk etter et tegn som dukker opp mer enn en gang. Her er det - ‘e’
SELECT SUBSTRING_INDEX('Software Testing Help', 'e', 1) as extracted_string; //Output Softwar
I dette eksemplet: siden vi har spesifisert tellingen som 1, vil utgangen være streng til den første forekomsten av ‘e’ er nådd.
Endre tellingen til 2 for samme tegn ‘e’.
SELECT SUBSTRING_INDEX('Software Testing Help', 'e', 2) as extracted_string; //Output Software T
Nå kan vi se, Substring opp til den andre forekomsten av karakteren ‘e’ returneres.
Ta et annet eksempel for å forstå at SUBSTRING INDEX er store og små bokstaver. La oss prøve med bokstaven 't' i stedet for 'T'
hvor er apk-filene lagret på android
SELECT SUBSTRING_INDEX('Software Testing Help', 't', 1) as extracted_string; //Output Sof
Søker etter en streng
Vi kan bruke SUBSTRING INDEX-funksjonen for å søke i en streng i stedet for et tegn. La oss søke etter ordet ‘Testing’.
SELECT SUBSTRING_INDEX('Software Testing Help', 'Testing', 1) as extracted_string; //Output Software
Søker etter en ikke-eksisterende streng
Bruke SUBSTRING INDEX med en streng som ikke eksisterer.
SELECT SUBSTRING_INDEX('Software Testing Help', 'abc', 1) as extracted_string; //Output Software Testing Help
Produksjonen kan være litt uventet her. Men siden MySQL-motoren ikke finner det nødvendige samsvaret, returnerer den hele strengen som utdata.
Søker etter karakter eller streng i omvendt rekkefølge
I likhet med SUBSTRING-funksjonen tillater SUBSTRING INDEX-funksjonen også å ha tellingen nevnt som negative tall. Dette betyr, i stedet for å krysse fra venstre til høyre, vil MySQL Engine prøve å finne en kamp fra høyre til venstre.
Forstå dette ved hjelp av noen eksempler.
SELECT SUBSTRING_INDEX('Software Testing Help', 'T', -1) as extracted_string; //Output esting Help
I eksemplet ovenfor kan du se at skilletegnet er ‘T’ mens tellingen er -1. Så resultatet vil være å trekke seg fra høyre til den første kampen for bokstaven 'T' er oppnådd.
Applikasjoner av MySQL SUBSTRING-funksjon
Vi bruker vanligvis MySQL-strengfunksjonene mens vi spør etter data fra 1 eller flere tabeller. Den kan brukes til å dele verdier i en kolonne, eller bare for å vise de essensielle verdiene etter behov.
Eksempel: Anta at vi har en ansattdetaljetabell som består av id, navn og adresse.
Og adressekolonnen er av format - {HouseNo}, {StreetName}
Nedenfor er skriptet for å lage en tabell og sette inn 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);
Bruk MySQL SUBSTRING-funksjonen for å ha husnummer hentet fra adressekolonnen som vist nedenfor.
SELECT name, SUBSTRING_INDEX(address,',',1) as house_no, address, age from employee_details
Produksjon:
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 spørringen ovenfor kan du se at vi har brukt SUBSTRING_INDEX-funksjonen for å skaffe husnummer fra adressekolonnen, og vi har brukt ‘,’ som skilletegn.
I likhet med dette kan det være mange applikasjoner der vi ønsker å trekke ut strengen for å hente meningsfull informasjon fra en større strenginngang eller kolonneverdien.
ofte stilte spørsmål
Q # 1) Hvilken MySQL-funksjon returnerer posisjonen for den første forekomsten av en SUBSTRING i strengen?
Svar: MySQL har to funksjoner for å returnere eller trekke ut en SUBSTRING ut av en gitt streng- eller kolonneverdi.
- 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
Spørsmål 2) Hva er SUBSTRING_INDEX i MySQL?
Svar: SUBSTRING_INDEX-funksjonen er en variant av SUBSTRING-funksjonen. Mens du i den vanlige SUBSTRING-funksjonen må nevne indeksen som et tall i inngangsstrengen, kan du for SUBSTRING_INDEX-funksjonen nevne enten et tegn eller en mindre delstreng som skal søkes etter.
Foreslått lesing = >> MySQL COUNT opplæring
Konklusjon
I denne opplæringen har vi lært om MySQL SUBSTRING og SUBSTRING_INDEX-funksjoner. Begge funksjonene trekker ut en understreng mot den gitte inngangsstrengen, men fungerer på en litt annen måte.
SUBSTRING forventer indeksen som de faktiske tallene, mens SUBSTRING_INDEX kan ha avgrenseren spesifisert som et tegn eller en strengverdi, og deretter kan MySQL Engine trekke ut mot ønsket matchende streng eller tegn.
Begge disse funksjonene brukes i stor grad der en kolonne som har flere informasjonstykker kan ekstraheres i underkolonner ved hjelp av strengutvinningslogikk basert på passende krav.
Anbefalt lesing
- C # String Tutorial - Strengmetoder med kodeeksempler
- Java substring () Metode - Veiledning med eksempler
- Java String inneholder () Metodeopplæring med eksempler
- Java-streng sammenligne metode med programmeringseksempler
- Strengfunksjoner i C ++: getline, substring, strenglengde og mer
- C ++ String Conversion Funksjoner: streng til int & int til streng
- Python-strengfunksjoner
- MySQL CONCAT og GROUP_CONCAT funksjoner med eksempler