mysql substring substring_index functions with examples
Spoznajte funkcije MySQL SUBSTRING in SUBSTRING_INDEX ter njihovo uporabo z več primeri:
Funkcija MySQL Substring se uporablja za ekstrakcijo podniza ali niza dela glede na vhodni niz. Kot že ime pove, funkcija Substring deluje na vhodu niza in vrne manjši podniz v primerjavi z navedenimi možnostmi.
Spoznali bomo tudi drugo različico SUBSTRINGA, imenovano SUBSTRING_INDEX. Ta funkcija kot ločilo sprejme znak ali vrednost niza in izvede iskanje glede na določeno vrednost ločila.
Ogledali si bomo tudi nekaj primerov, da bomo razumeli, kako je mogoče te funkcije uporabljati med poizvedovanjem po podatkih kot del poizvedb SELECT.
Kaj se boste naučili:
MySQL PODLAGA
Sintaksa:
// format 1 SELECT SUBSTRING('{String Value}', {start_index}, {count}); // format 2 SELECT SUBSTRING('{String Value}'FROM {start_index} for {count});
Funkcijo SUBSTRING lahko uporabimo na dva načina.
Razumejmo skladnjo, preden se poglobimo v primere.
- {Vrednost niza}: To je dejanska vrednost niza ali ime stolpca, ki vsebuje niz, ki ga je treba obdelati.
- {start_index}: start_index je indeks z leve ali desne strani, kjer bi se začel podniz. Vrednosti so lahko pozitivne ali negativne, odvisno od tega, ali želimo String izvleči z leve ali desne strani. To bo postalo bolj jasno s primeri.
- {count}: To polje ni obvezno in določa število znakov iz start_index polje, za katero je treba izvleči podniz. Če ni omenjen, potem celoten niz, začenši z ujemanjem start_index bi bili vrnjeni.
Format2 je različica formata1, le da je bolj berljiv z uporabo ključnih besed FROM in FOR. Torej, tukaj je uporabljen FROM, preden omenimo start_index vrednost, za omembo pa se uporabi FOR štetje .
Oglejmo si nekaj primerov za razumevanje funkcije MySQL SUBSTRING.
Vzemimo vrednost vnosa niza kot Pomoč za testiranje programske opreme
Kazala nizov bodo videti kot spodnja tabela
1. | dva | 3. | 4. | 5. | 6. | 7. | 8. | 9. | 10. | enajst | 12. | 13. | 14. | petnajst | 16. | 17. | 18. | 19. | dvajset | enaindvajset |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
S | ali | f | t | v | do | r | je | T | je | s | t | jaz | n | g | H | je | l | str |
Primer podnapisov MySQL
Brez grofa
Recimo, da želimo iz zgornjega niza izvleči besedilo pomoči - H ima indeks 18
Oglejmo si spodnjo poizvedbo:
SELECT SUBSTRING('Software Testing Help', 18) as extracted_string; SELECT SUBSTRING('Software Testing Help' FROM 18) as extracted_string; // Output Help
Tu je pomembno opozoriti, da nismo omenili nobene vrednosti za štetje, vendar še vedno dobimo pravilen niz - to je zato, ker se pri izpuščanju števila vrne celoten niz, ki se začne od danega indeksa.
V tem primeru, če omenimo začetni indeks, na primer, za „T“ (indeks 10)
SELECT SUBSTRING('Software Testing Help', 10) as extracted_string; //Output Testing Help
Kot lahko vidite zgoraj, izhod vsebuje celotno besedilo 'Testing Help'.
Z grofom
Zdaj pa si oglejmo primer, kjer bomo omenili število znakov, ki jih je treba vrniti.
Recimo, da želimo samo izvleči besedo »Testing« iz niza »Help Testing Help«. Potem lahko omenimo štetje kot - 7 (kar je dolžina besede 'Testiranje')
Oglejmo si spodnjo poizvedbo:
SELECT SUBSTRING('Software Testing Help', 10, 7) as extracted_string; SELECT SUBSTRING('Software Testing Help' FROM 10 FOR 7) as extracted_string; //Output Testing
Tu smo opisali začetni indeks in število znakov kot del poizvedbe, da dobimo zahtevani rezultat.
Z negativnimi indeksnimi vrednostmi
Do zdaj smo za primere, ki smo jih videli, navedli start_index kot pozitivna vrednost.
Za negativni lahko določimo tudi start_index, kar preprosto pomeni, da bo namesto štetja od leve strani motor MySQL poskušal šteti začetni indeks od konca niza.
Poglejmo primer
Za našo niz »Pomoč za testiranje programske opreme« dodajte spodnjo vrstico, da določimo prave indekse
L | 1. | dva | 3. | 4. | 5. | 6. | 7. | 8. | 9. | 10. | enajst | 12. | 13. | 14. | petnajst | 16. | 17. | 18. | 19. | dvajset | enaindvajset |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
S | ali | f | t | v | do | r | je | T | je | s | t | jaz | n | g | H | je | l | str | |||
R | enaindvajset | dvajset | 19. | 18. | 17. | 16. | petnajst | 14. | 13. | 12. | enajst | 10. | 9. | 8. | 7. | 6. | 5. | 4. | 3. | dva | 1. |
Torej, spodnja vrstica tukaj predstavlja prave indekse. Zdaj predpostavimo, da želimo izvleči besedo 'Testiranje' s pomočjo funkcije MySQL SUBSTRING s pravim indeksom.
Desni indeks za 'T' v preskušanju je 12 (in levi indeks je 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
Kot lahko vidite v zgornjem primeru, bo omenjanje pravih indeksov kot negativne vrednosti še vedno dalo enak rezultat.
Indeks zunaj meja
Zdaj poskusite z nekaj negativnimi scenariji
- Ko določen start_index ne obstaja: tj. navedeni indeks je zunaj meja, potem bi bil izhod prazen.
SELECT SUBSTRING('Software Testing Help', 30, 2) as extracted_string; //output Empty String
- Če je določeno število negativno ali večje od skupne dolžine niza, bi bil rezultat le preostali del niza (začetek določenega začetka_indeksa).
SELECT SUBSTRING('Software Testing Help', 5, 100) as extracted_string; //output ware Testing Help
Zgoraj lahko vidite, tukaj je bilo število omenjeno kot 100, vendar je niz dolg le 21 znakov.
- Preizkusimo še en scenarij z omenjenim številom kot negativnim.
SELECT SUBSTRING('Software Testing Help', 5, -20) as extracted_string; //output Empty String
Tu tudi ne bo nobene napake in bo samo prazen niz, ki bi bil izhod.
MySQL SUBSTRING_INDEX
To je druga različica funkcije MySQL SUBSTRING.
Namesto da omenimo dejansko vrednost start_index, lahko preprosto omenimo znak in indeks ter kolikokrat je treba ločilo iskati, preden vrne izhod.
Pomembno je omeniti tukaj SUBSTRING_INDEX
Funkcija indeksa podmestitve MySQL:
SUBSTRING_INDEX({StringValue/Column},delimiter,n)
- {StringValue / Stolpec}: Vnos dejanskega niza ali ime stolpca v poizvedbi SELECT.
- Ločilo: Poiskati je treba znak ali podniz, da izvlečemo preostali niz kot izhod. Ta vrednost razlikuje med velikimi in malimi črkami, zato jo je treba določiti, kot je prikazana v dejanskem nizu.
- n: Število ločil - to pomeni, kolikokrat je treba ločilo iskati, preden vrnete niz.
Razumimo to s pomočjo nekaterih primerov.
Za vse primere, o katerih bomo razpravljali v naslednjem razdelku spodaj, bomo uporabili isti niz »Pomoč za testiranje programske opreme« kot naš vhodni niz.
Iskanje lika
Med iskanjem znaka „T“ bi bil rezultat „Programska oprema“. Upoštevajte, da bo vključen tudi dodaten prostor za besedo Programska oprema.
SELECT SUBSTRING_INDEX('Software Testing Help', 'T', 1) as extracted_string; //Output Software
Poiščite znak, ki se pojavi večkrat. Tukaj je - 'e'
SELECT SUBSTRING_INDEX('Software Testing Help', 'e', 1) as extracted_string; //Output Softwar
V tem primeru: ker smo štetje določili kot 1, bo izhod String, dokler ne bo dosežen prvi pojav 'e'.
Spremenite število na 2 za isti znak 'e'.
SELECT SUBSTRING_INDEX('Software Testing Help', 'e', 2) as extracted_string; //Output Software T
Zdaj lahko vidimo, vrne se podniz do drugega pojavljanja znaka 'e'.
Vzemite drug primer, da boste razumeli, da je INDUSTRIJSKI PODATEK občutljiv na velike in male črke. Poskusimo s črko 't' namesto z 'T'
odprite .bin datotečno okno 10
SELECT SUBSTRING_INDEX('Software Testing Help', 't', 1) as extracted_string; //Output Sof
Iskanje niza
Funkcijo SUBSTRING INDEX lahko uporabimo za iskanje niza namesto znaka. Poiščimo besedo 'Testiranje'.
SELECT SUBSTRING_INDEX('Software Testing Help', 'Testing', 1) as extracted_string; //Output Software
Iskanje neobstoječega niza
Uporaba SUBSTRING INDEX z nizom, ki ne obstaja.
SELECT SUBSTRING_INDEX('Software Testing Help', 'abc', 1) as extracted_string; //Output Software Testing Help
Rezultat je tu lahko nekoliko nepričakovan. Ker pa MySQL Engine ne najde zahtevanega ujemanja, vrne celoten niz kot izhod.
Iskanje znakov ali nizov v obratnem vrstnem redu
Podobno kot funkcija SUBSTRING tudi funkcija SUBSTRING INDEX omogoča, da se štetje omenja kot negativna števila. To pomeni, da bo MySQL Engine, namesto da bi hodil od leve proti desni, poskušal najti ujemanje od desne proti levi.
To razumejte s pomočjo nekaterih primerov.
SELECT SUBSTRING_INDEX('Software Testing Help', 'T', -1) as extracted_string; //Output esting Help
V zgornjem primeru lahko vidite, da je ločilo 'T', medtem ko je število -1. Torej bi bil izhod Substring z desne, dokler ne dobimo prvega ujemanja za črko 'T'.
Aplikacije funkcije MySQL SUBSTRING
Običajno uporabljamo funkcije MySQL String med poizvedovanjem po podatkih iz 1 ali več tabel. Uporablja se lahko za razdelitev vrednosti v stolpec ali samo za prikaz bistvenih vrednosti po potrebi.
Primer: Predpostavimo, da imamo tabelo s podatki o zaposlenem, ki jo sestavljajo id, ime in naslov.
In naslovni stolpec je v obliki - {HouseNo}, {StreetName}
Spodaj je skript za ustvarjanje tabele in vstavljanje lažnih podatkov:
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);
Za uporabo datoteke MySQL SUBSTRING uporabite hišna številka izvlečeno iz naslovnega stolpca, kot je prikazano spodaj.
SELECT name, SUBSTRING_INDEX(address,',',1) as house_no, address, age from employee_details
Izhod:
ime | house_no | naslov | starost |
---|---|---|---|
Akash malhotra | 22. | 22, Obrambna kolonija | 24. |
Steve Wilson | 12/4 | 12/4, Wilson Street | 28. |
Monica Singh | 190 | 190, Smith Lane | 32 |
V zgornji poizvedbi lahko vidite, da smo uporabili funkcijo SUBSTRING_INDEX za pridobitev hišne številke iz stolpca z naslovi, za ločilo pa smo uporabili ','.
Podobno temu lahko tudi v mnogih aplikacijah izvlečemo String, da pridobimo nekaj pomembnih informacij iz večjega vnosa niza ali vrednosti stolpca.
Pogosto zastavljena vprašanja
V # 1) Katera funkcija MySQL vrne položaj prvega pojavljanja SUBSTRINGA v nizu?
Odgovor: MySQL ponuja dve funkciji za vrnitev ali izvleček PODLEKA iz dane vrednosti niza ali stolpca.
- PODLOGA
Primer:
SELECT SUBSTRING('Test Input',1,4) as extracted_string; // Output Test
- INDEKS PODLOGE
Primer:
SELECT SUBSTRING_INDEX('Test Input','t',1) as extracted_string; //Output Tes
V # 2) Kaj je SUBSTRING_INDEX v MySQL?
Odgovor: Funkcija SUBSTRING_INDEX je različica funkcije SUBSTRING. Medtem ko morate v običajni funkciji SUBSTRING indeks omeniti kot številko v vhodnem nizu, pri funkciji SUBSTRING_INDEX pa lahko omenite znak ali manjši podniz, ki ga želite iskati.
Predlagano branje = >> Vadnica za štetje MySQL
Zaključek
V tej vadnici smo spoznali funkcije MySQL SUBSTRING in SUBSTRING_INDEX. Obe funkciji izvlečeta podniz iz danega vhodnega niza, vendar delujeta nekoliko drugače.
SUBSTRING pričakuje, da bo indeks dejansko število, medtem ko ima lahko SUBSTRING_INDEX ločilo, določeno kot znak ali vrednost niza, nato pa lahko MySQL Engine izvleče iz zahtevanega ujemajočega se niza ali znaka.
Obe funkciji se v veliki meri uporabljata tam, kjer je mogoče stolpec z več informacijami ekstrahirati v pod stolpce z uporabo logike ekstrakcije niza na podlagi ustreznih zahtev.
Priporočeno branje
- C # Vadnica za niz - String metode s primeri kode
- Metoda Java substring () - Vadnica s primeri
- Java String vsebuje () Vadnico metode s primeri
- Java String compareTo Method s primeri programiranja
- Funkcije niza v jeziku C ++: getline, podniz, dolžina niza in drugo
- Funkcije pretvorbe nizov C ++: niz v int in int v niz
- Funkcije niza Python
- Funkcije MySQL CONCAT in GROUP_CONCAT s primeri