mysql substring substring_index functions with examples
Saznajte više o funkcijama MySQL SUBSTRING i SUBSTRING_INDEX i njihovoj upotrebi na više primjera:
MySQL funkcija podniza koristi se za izdvajanje podniza ili niza dijela prema ulaznom nizu. Kao što naziv sugerira, funkcija Substring djeluje na unosu niza i vraća manji podniz u odnosu na navedene opcije.
Također ćemo saznati o drugoj varijanti SUBSTRINGA pod nazivom SUBSTRING_INDEX. Ova funkcija prihvaća vrijednost znaka ili niza kao graničnik i izvršava pretragu prema zadanoj vrijednosti graničnika.
Također ćemo pogledati neke primjere kako bismo razumjeli kako se ove funkcije mogu koristiti tijekom upita podataka kao dio SELECT upita.
Što ćete naučiti:
MySQL PODLOGA
Sintaksa:
// format 1 SELECT SUBSTRING('{String Value}', {start_index}, {count}); // format 2 SELECT SUBSTRING('{String Value}'FROM {start_index} for {count});
Postoje 2 načina na koja možemo koristiti funkciju SUBSTRING.
Razumijemo sintaksu prije nego što uđemo u primjere.
- {Vrijednost niza}: Ovo je stvarna vrijednost niza ili naziv stupca koji sadrži niz na kojem će se raditi.
- {start_index}: start_index je indeks slijeva ili zdesna gdje bi se podniz pokrenuo. Vrijednosti mogu biti pozitivne ili negativne, ovisno o tome želimo li izdvojiti String s lijeve ili s desne strane. To će postati jasnije na primjerima.
- {računati}: Ovo polje nije obavezno i određuje broj znakova iz start_index polje za koje treba izdvojiti podniz. Ako nije spomenuto, onda cijeli niz počevši od podudaranja start_index bio bi vraćen.
Format2 varijacija je formata1, osim što je čitljiviji pomoću ključnih riječi IZ i ZA. Dakle, ovdje se koristi FROM prije spominjanja start_index vrijednost, a FOR se koristi prije spominjanja računati .
Pogledajmo nekoliko primjera za razumijevanje funkcije MySQL SUBSTRING.
Uzmimo vrijednost unosa niza kao Pomoć za testiranje softvera
Indeksi nizova izgledat će kao u donjoj tablici
jedan | dva | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | jedanaest | 12 | 13 | 14 | petnaest | 16 | 17 | 18 | 19 | dvadeset | dvadeset i jedan |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
S | ili | f | t | u | do | r | je | T | je | s | t | ja | n | g | H | je | l | str |
Primjer MySQL SUBSTRING-a
Bez grofa
Pretpostavimo da želimo izdvojiti tekst pomoći iz gornjeg niza - H ima indeks 18
Pogledajmo upit u nastavku:
SELECT SUBSTRING('Software Testing Help', 18) as extracted_string; SELECT SUBSTRING('Software Testing Help' FROM 18) as extracted_string; // Output Help
Ovdje je važno napomenuti da nismo spomenuli nikakvu vrijednost za računati, ali još uvijek dobivamo ispravan niz - to je zato što se kada izostane brojanje vraća čitav niz počevši od zadanog indeksa.
U ovom slučaju, ako spomenemo početni indeks, na primjer, za „T“ (indeks 10)
SELECT SUBSTRING('Software Testing Help', 10) as extracted_string; //Output Testing Help
Kao što gore možete vidjeti, izlaz sadrži cijeli tekst 'Pomoć za testiranje'.
S grofom
Pogledajmo sada primjer gdje ćemo spomenuti broj znakova koji se trebaju vratiti.
Pretpostavimo da samo želimo izdvojiti riječ 'Testiranje' iz niza 'Pomoć za testiranje softvera'. Tada možemo spomenuti računati kao - 7 (što je duljina riječi 'Ispitivanje)
Pogledajmo upit u nastavku:
SELECT SUBSTRING('Software Testing Help', 10, 7) as extracted_string; SELECT SUBSTRING('Software Testing Help' FROM 10 FOR 7) as extracted_string; //Output Testing
Ovdje smo opisali i početni indeks i broj znakova kao dio upita kako bismo dobili traženi rezultat.
S negativnim indeksnim vrijednostima
Do sada smo za primjere koje smo vidjeli naveli start_index kao pozitivna vrijednost.
Start_index također možemo odrediti kao negativan, što jednostavno znači da će umjesto brojanja slijeva, MySQL mehanizam pokušati prebrojati početni indeks s kraja niza.
Pogledajmo primjer
Za našu String „Pomoć za testiranje softvera“, dodajte red u nastavku kako bismo identificirali prave indekse
L | jedan | dva | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | jedanaest | 12 | 13 | 14 | petnaest | 16 | 17 | 18 | 19 | dvadeset | dvadeset i jedan |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
S | ili | f | t | u | do | r | je | T | je | s | t | ja | n | g | H | je | l | str | |||
R | dvadeset i jedan | dvadeset | 19 | 18 | 17 | 16 | petnaest | 14 | 13 | 12 | jedanaest | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | dva | jedan |
Dakle, donji redak ovdje predstavlja prave indekse. Sada pretpostavimo da želimo izvući riječ 'Ispitivanje' pomoću funkcije MySQL SUBSTRING s pravim indeksom.
Desni indeks za 'T' u testiranju je 12 (a lijevi indeks 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
Kao što možete vidjeti u gornjem primjeru, spominjanje pravih indeksa kao negativne vrijednosti i dalje će dati isti rezultat.
Indeks izvan granica
Pokušajte sada s nekim negativnim scenarijima
- Kada navedeni start_index ne postoji: tj. navedeni indeks je izvan granica, tada bi izlaz bio prazan.
SELECT SUBSTRING('Software Testing Help', 30, 2) as extracted_string; //output Empty String
- Kada je navedeno brojanje negativno ili veće od ukupne duljine niza, tada bi izlaz bio samo ostatak niza (započinjanje navedenog start_index).
SELECT SUBSTRING('Software Testing Help', 5, 100) as extracted_string; //output ware Testing Help
Možete vidjeti gore, ovdje se brojanje spominje kao 100, ali Niz je samo 21 znak.
- Pokušajmo s još jednim scenarijem s brojanjem koje se spominje kao negativno.
SELECT SUBSTRING('Software Testing Help', 5, -20) as extracted_string; //output Empty String
Ovdje također neće biti pogreške i bit će samo prazan niz koji će biti izlaz.
MySQL SUBSTRING_INDEX
Ovo je još jedna varijanta funkcije MySQL SUBSTRING.
Ovdje, umjesto spominjanja stvarne vrijednosti start_index, možemo jednostavno spomenuti znak i indeks te broj puta koliko je potrebno tražiti graničnik prije vraćanja rezultata.
Ovdje je važno napomenuti SUBSTRING_INDEX
MySQL SUBSTRING INDEX funkcija:
SUBSTRING_INDEX({StringValue/Column},delimiter,n)
- {StringValue / Column}: Stvarni unos niza ili naziv stupca u upitu SELECT.
- Razdjelnik: To je znak ili podniz koji treba potražiti da bi se preostali niz izdvojio kao izlaz. Ova vrijednost razlikuje velika i mala slova, pa bi je trebalo navesti onako kako se pojavljuje u stvarnom nizu.
- n: Broj graničnika - tj. Koliko puta treba tražiti graničnik prije vraćanja niza.
Shvatimo to uz pomoć nekih primjera.
Upotrijebit ćemo isti niz 'Pomoć za testiranje softvera' kao i naš ulazni niz za sve primjere o kojima ćemo raspravljati u sljedećem odjeljku u nastavku.
Traženje lika
Dok se traži znak „T“, izlaz bi bio „Softver“. Primijetite da će biti uključen i dodatni prostor nakon riječi Softver.
SELECT SUBSTRING_INDEX('Software Testing Help', 'T', 1) as extracted_string; //Output Software
Potražite lik koji se pojavljuje više puta. Evo, to je - 'e'
SELECT SUBSTRING_INDEX('Software Testing Help', 'e', 1) as extracted_string; //Output Softwar
U ovom primjeru: budući da smo brojanje odredili kao 1, izlaz će biti String dok se ne postigne prva pojava 'e'.
Promijenite broj na 2 za isti znak 'e'.
SELECT SUBSTRING_INDEX('Software Testing Help', 'e', 2) as extracted_string; //Output Software T
Sad, vidimo, vraća se podniz do drugog pojavljivanja znaka 'e'.
Uzmite još jedan primjer da biste shvatili da INDEKS SUBSTRINGA razlikuje velika i mala slova. Pokušajmo sa slovom ‘t’ umjesto ‘T’
životni ciklus buga u testiranju softvera
SELECT SUBSTRING_INDEX('Software Testing Help', 't', 1) as extracted_string; //Output Sof
Traženje gudača
Funkciju SUBSTRING INDEX možemo koristiti za pretraživanje niza umjesto znaka. Potražimo riječ ‘Testiranje’.
SELECT SUBSTRING_INDEX('Software Testing Help', 'Testing', 1) as extracted_string; //Output Software
Traženje nepostojećeg niza
Korištenje SUBSTRING INDEX-a sa nizom koji ne postoji.
SELECT SUBSTRING_INDEX('Software Testing Help', 'abc', 1) as extracted_string; //Output Software Testing Help
Izlaz bi ovdje mogao biti malo neočekivan. Ali budući da MySQL Engine ne može pronaći traženo podudaranje, vraća cijeli niz kao izlaz.
Traženje znaka ili niza obrnutim redoslijedom
Slično funkciji SUBSTRING, funkcija SUBSTRING INDEX također omogućuje da se brojanje spominje kao negativni broj. To znači da će, umjesto kretanja slijeva udesno, MySQL Engine pokušati pronaći podudaranje zdesna ulijevo.
Shvatite to uz pomoć nekoliko primjera.
SELECT SUBSTRING_INDEX('Software Testing Help', 'T', -1) as extracted_string; //Output esting Help
U gornjem primjeru možete vidjeti da je graničnik 'T', dok je broj -1. Dakle, izlaz bi bio Substring s desne strane dok se ne dobije prvo podudaranje slova 'T'.
Primjene MySQL SUPSTRING funkcije
Općenito koristimo funkcije MySQL String tijekom ispitivanja podataka iz 1 ili više tablica. Može se koristiti za razdvajanje vrijednosti u stupac ili samo za prikaz bitnih vrijednosti prema potrebi.
Primjer: Pretpostavimo da imamo tablicu podataka o zaposleniku koja se sastoji od id-a, imena i adrese.
A stupac adrese je formata - {HouseNo}, {StreetName}
Ispod je skripta za stvaranje tablice i umetanje lažnih podataka:
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);
Koristite MySQL SUBSTRING funkciju da biste dobili kućni broj izdvojeno iz adresnog stupca kako je prikazano dolje.
SELECT name, SUBSTRING_INDEX(address,',',1) as house_no, address, age from employee_details
Izlaz:
Ime | kuća_br | adresa | dob |
---|---|---|---|
Akaš malhotra | 22 | 22, Obrambena kolonija | 24 |
Steve Wilson | 12/4 | 12/4, Wilson Street | 28 |
Monica Singh | 190 | 190, Smith Lane | 32 |
U gornjem upitu možete vidjeti da smo koristili funkciju SUBSTRING_INDEX za dobivanje kućnog broja iz stupca adrese, a kao graničnik koristili smo „,“.
Slično ovome, može biti mnogo aplikacija u kojima bismo željeli izdvojiti String da bismo dohvatili neke značajne informacije iz većeg unosa niza ili vrijednosti stupca.
Često postavljana pitanja
P # 1) Koja MySQL funkcija vraća položaj prvog pojavljivanja SUBSTRINGA u nizu?
Odgovor: MySQL nudi 2 funkcije za vraćanje ili izdvajanje PODLOGE iz zadane vrijednosti niza ili stupca.
- PODLOGA
Primjer:
SELECT SUBSTRING('Test Input',1,4) as extracted_string; // Output Test
- INDEKS PODLOGE
Primjer:
SELECT SUBSTRING_INDEX('Test Input','t',1) as extracted_string; //Output Tes
P # 2) Što je SUBSTRING_INDEX u MySQL-u?
Odgovor: Funkcija SUBSTRING_INDEX varijanta je funkcije SUBSTRING. Iako u normalnoj funkciji SUBSTRING morate indeks spomenuti kao broj u ulaznom nizu, za funkciju SUBSTRING_INDEX možete spomenuti ili znak ili manji podniz koji se traži.
Predloženo čitanje = >> MySQL COUNT Vodič
Zaključak
U ovom uputstvu naučili smo o funkcijama MySQL SUBSTRING i SUBSTRING_INDEX. Obje funkcije izdvajaju podniz prema zadanom ulaznom nizu, ali rade na malo drugačiji način.
SUBSTRING očekuje indeks kao stvarne brojeve, dok SUBSTRING_INDEX može imati graničnik naveden kao znak ili vrijednost niza, a zatim MySQL Engine može izdvojiti traženi podudarni niz ili znak.
Obje se ove funkcije u velikoj mjeri koriste tamo gdje se stupac koji ima više podataka može ekstrahirati u potkolone pomoću logike izvlačenja niza na temelju odgovarajućih zahtjeva.
Preporučena literatura
- Vodič za niz stringa C # - Nizne metode s primjerima koda
- Metoda Java podniz () - Vodič s primjerima
- Java String sadrži () Vodič za metode s primjerima
- Java String compareTo metoda s primjerima programiranja
- String funkcije u C ++: getline, podniz, duljina niza i još mnogo toga
- Funkcije pretvorbe niza C ++: niz u int i int u niz
- Python string funkcije
- MySQL CONCAT i GROUP_CONCAT funkcije s primjerima