mysql substring substring_index functions with examples
Aflați despre funcțiile MySQL SUBSTRING și SUBSTRING_INDEX și despre utilizarea acesteia cu mai multe exemple:
Funcția MySQL Substring este utilizată pentru a extrage un șir sau un șir parțial împotriva șirului de intrare. După cum sugerează și numele, funcția Substring funcționează pe o intrare de șir și returnează un substring mai mic împotriva opțiunilor specificate.
Vom afla, de asemenea, despre o altă variantă a SUBSTRING numită SUBSTRING_INDEX. Această funcție acceptă caracterul sau valoarea șirului ca delimitator și execută o căutare împotriva valorii delimitatorului dat.
De asemenea, vom analiza câteva exemple pentru a înțelege modul în care aceste funcții pot fi utilizate în timpul interogării datelor ca parte a interogărilor SELECT.
Ce veți învăța:
MySQL SUBSTRING
Sintaxă:
// format 1 SELECT SUBSTRING('{String Value}', {start_index}, {count}); // format 2 SELECT SUBSTRING('{String Value}'FROM {start_index} for {count});
Există 2 moduri în care putem folosi funcția SUBSTRING.
Să înțelegem sintaxa înainte de a intra în exemple.
- {Valoarea șirului}: Aceasta este valoarea actuală a șirului sau numele coloanei care conține șirul la care trebuie lucrat.
- {start_index}: start_index este indexul din stânga sau din dreapta unde ar fi pornit Substring. Valorile pot fi pozitive sau negative, în funcție de faptul dacă vrem să extragem șirul din partea stângă sau, respectiv, din partea dreaptă. Acest lucru va deveni mai clar cu exemplele.
- {numara}: Acest câmp este opțional și specifică numărul de caractere din start_index câmp pentru care trebuie extras Substring. Dacă nu este menționat, atunci întregul șir începând de la potrivire start_index ar fi returnat.
Format2 este o variantă a formatului1, cu excepția faptului că este mai ușor de citit folosind cuvinte cheie FROM și FOR. Deci aici, FROM este folosit înainte de a menționa start_index valoare, iar FOR este utilizat înainte de a menționa numara .
Să vedem câteva exemple pentru a înțelege funcția SUBSTRING MySQL.
Să luăm valoarea de intrare șir ca Ajutor pentru testarea software-ului
Indicele șirului va arăta ca în tabelul de mai jos
1 | Două | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | unsprezece | 12 | 13 | 14 | cincisprezece | 16 | 17 | 18 | 19 | douăzeci | douăzeci și unu |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
S | sau | f | t | în | la | r | este | T | este | s | t | eu | n | g | H | este | l | p |
MySQL SUBSTRING Exemplu
Fără conte
Să presupunem că vrem să extragem textul de ajutor din șirul de mai sus - H are un index de 18
Să vedem interogarea de mai jos:
SELECT SUBSTRING('Software Testing Help', 18) as extracted_string; SELECT SUBSTRING('Software Testing Help' FROM 18) as extracted_string; // Output Help
Este important de menționat aici că nu am menționat nicio valoare pentru numara, dar încă obținem șirul corect - acest lucru se datorează faptului că atunci când contorul este omis, întregul șir care începe de la indexul dat este returnat.
În acest caz, dacă menționăm Indexul de start, de exemplu, pentru „T” (Index 10)
SELECT SUBSTRING('Software Testing Help', 10) as extracted_string; //Output Testing Help
După cum puteți vedea mai sus, rezultatul conține întregul text „Ajutor pentru testare”.
Cu contele
Acum, să vedem un exemplu în care vom menționa numărul de caractere care trebuie returnate.
Să presupunem că vrem doar să extragem cuvântul „Testare” din șirul „Ajutor pentru testarea software-ului”. Apoi, putem menționa numărarea ca - 7 (care este lungimea cuvântului „Testare)
Să vedem interogarea de mai jos:
SELECT SUBSTRING('Software Testing Help', 10, 7) as extracted_string; SELECT SUBSTRING('Software Testing Help' FROM 10 FOR 7) as extracted_string; //Output Testing
Aici am descris atât indexul inițial, cât și numărul de caractere ca parte a interogării pentru a obține rezultatul necesar.
Cu valori negative ale indexului
Până acum, pentru exemplele pe care le-am văzut, am specificat start_index ca valoare pozitivă.
De asemenea, putem specifica start_index ca negativ, ceea ce înseamnă pur și simplu că, în loc să se numere de la stânga, motorul MySQL va încerca să numere Indexul de start de la sfârșitul șirului.
Să vedem un exemplu
Pentru șirul „Ajutor pentru testarea software-ului”, să adăugăm un rând mai jos pentru a identifica indexurile corecte
L | 1 | Două | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | unsprezece | 12 | 13 | 14 | cincisprezece | 16 | 17 | 18 | 19 | douăzeci | douăzeci și unu |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
S | sau | f | t | în | la | r | este | T | este | s | t | eu | n | g | H | este | l | p | |||
R | douăzeci și unu | douăzeci | 19 | 18 | 17 | 16 | cincisprezece | 14 | 13 | 12 | unsprezece | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | Două | 1 |
Deci, rândul de jos de aici reprezintă indexurile corecte. Acum, să presupunem că vrem să extragem cuvântul „Testare” folosind funcția SUBSTRING MySQL cu indexul potrivit.
Indicele corect pentru „T” în testare este 12 (iar indicele din stânga este 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
După cum puteți vedea în exemplul de mai sus, menționarea indexurilor corecte ca valoare negativă va produce totuși același rezultat.
Index Out of Bounds
Acum, încercați câteva scenarii negative
- Când start_index specificat nu există: adică indexul specificat este în afara limitelor, atunci ieșirea ar fi goală.
SELECT SUBSTRING('Software Testing Help', 30, 2) as extracted_string; //output Empty String
- Când numărul specificat este negativ sau mai mare decât lungimea totală a șirului, atunci ieșirea ar fi doar restul șirului (începând cu start_index specificat).
SELECT SUBSTRING('Software Testing Help', 5, 100) as extracted_string; //output ware Testing Help
Puteți vedea mai sus, aici numărul a fost menționat ca 100, dar șirul are doar 21 de caractere.
- Să încercăm încă un scenariu cu numărul menționat ca fiind negativ.
SELECT SUBSTRING('Software Testing Help', 5, -20) as extracted_string; //output Empty String
Aici, de asemenea, nu va exista nicio eroare și va exista doar un șir gol care ar fi ieșirea.
MySQL SUBSTRING_INDEX
Aceasta este o altă variantă a funcției SUBSTRING MySQL.
Aici, în loc să menționăm valoarea reală a start_index, putem menționa pur și simplu caracterul și indexul și de câte ori trebuie căutat delimitatorul înainte de a returna ieșirea.
Un punct important de remarcat aici este SUBSTRING_INDEX
Funcția MySQL SUBSTRING INDEX:
SUBSTRING_INDEX({StringValue/Column},delimiter,n)
- {StringValue / Column}: Intrarea efectivă a șirului sau numele coloanei din interogarea SELECT.
- Delimitator: Este caracterul sau șirul care trebuie căutat, pentru a extrage șirul rămas ca ieșire. Această valoare este sensibilă la majuscule, deci ar trebui specificată așa cum apare în șirul propriu-zis.
- n: Numărul de delimitator - adică numărul de ori în care trebuie căutat delimitatorul înainte de a returna șirul.
Să înțelegem acest lucru cu ajutorul unor exemple.
Vom folosi același șir „Ajutor pentru testarea software-ului” ca șirul de intrare pentru toate exemplele pe care le vom discuta în secțiunea următoare de mai jos.
Căutarea unui personaj
În timp ce căutați caracterul „T”, rezultatul va fi „Software”. Observați că va fi inclus și spațiul suplimentar după cuvântul Software.
SELECT SUBSTRING_INDEX('Software Testing Help', 'T', 1) as extracted_string; //Output Software
Căutați un personaj care apare de mai multe ori. Iată, este - „e”
SELECT SUBSTRING_INDEX('Software Testing Help', 'e', 1) as extracted_string; //Output Softwar
În acest exemplu: deoarece am specificat numărul 1, ieșirea ar fi String până la prima apariție a „e”.
Schimbați numărul la 2 pentru același caracter „e”.
SELECT SUBSTRING_INDEX('Software Testing Help', 'e', 2) as extracted_string; //Output Software T
Acum, putem vedea, se restituie șirul până la a doua apariție a caracterului „e”.
Luați un alt exemplu pentru a înțelege că SUBSTRING INDEX este sensibil la majuscule. Să încercăm cu litera „t” în loc de „T”
algoritm de inserare sortare c ++
SELECT SUBSTRING_INDEX('Software Testing Help', 't', 1) as extracted_string; //Output Sof
Căutarea unui șir
Putem folosi funcția SUBSTRING INDEX pentru căutarea unui șir în loc de un caracter. Să căutăm cuvântul „Testare”.
SELECT SUBSTRING_INDEX('Software Testing Help', 'Testing', 1) as extracted_string; //Output Software
Căutarea unui șir inexistent
Utilizarea SUBSTRING INDEX cu un șir care nu există.
SELECT SUBSTRING_INDEX('Software Testing Help', 'abc', 1) as extracted_string; //Output Software Testing Help
Rezultatul ar putea fi puțin neașteptat aici. Dar, deoarece MySQL Engine nu poate găsi potrivirea necesară, returnează întregul șir ca ieșire.
Căutarea caracterului sau șirului în ordine inversă
Similar funcției SUBSTRING, funcția SUBSTRING INDEX permite, de asemenea, ca numărul să fie menționat ca numere negative. Aceasta înseamnă că, în loc să parcurgă de la stânga la dreapta, MySQL Engine va încerca să găsească o potrivire de la dreapta la stânga.
Înțelegeți acest lucru cu ajutorul unor exemple.
SELECT SUBSTRING_INDEX('Software Testing Help', 'T', -1) as extracted_string; //Output esting Help
În exemplul de mai sus, puteți vedea că delimitatorul este „T” în timp ce numărul este -1. Deci, ieșirea ar fi Subșir din dreapta până se obține prima potrivire pentru litera „T”.
Aplicații ale funcției SUBSTRING MySQL
În general, folosim funcțiile MySQL String în timp ce interogăm date de la 1 sau mai multe tabele. Poate fi folosit pentru a împărți valorile într-o coloană sau doar pentru a afișa valorile esențiale conform nevoilor.
Exemplu: Să presupunem că avem un tabel cu detalii despre angajați format din ID, nume și adresă.
Și coloana adresă este de format - {HouseNo}, {StreetName}
Mai jos este Scriptul pentru a crea un tabel și a insera date fictive:
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);
Utilizați funcția MySQL SUBSTRING pentru a avea numărul casei extrase din coloana de adresă așa cum se arată mai jos.
SELECT name, SUBSTRING_INDEX(address,',',1) as house_no, address, age from employee_details
Ieșire:
Nume | casă_nu | abordare | vârstă |
---|---|---|---|
Akash malhotra | 22 | 22, Colonia Apărării | 24 |
Steve Wilson | 12/4 | 12/4, strada Wilson | 28 |
Monica Singh | 190 | 190, Smith Lane | 32 |
În interogarea de mai sus, puteți vedea că am folosit funcția SUBSTRING_INDEX pentru a obține numărul de casă din coloana adresă și am folosit „,” ca delimitator.
Similar cu aceasta, pot exista multe aplicații în care am dori să extragem șirul pentru a prelua unele informații semnificative dintr-o intrare de șir mai mare sau din valoarea coloanei.
întrebări frecvente
Q # 1) Care funcție MySQL returnează poziția primei apariții a unui SUBSTRING în șir?
Răspuns: MySQL oferă 2 funcții pentru a returna sau extrage un SUBSTRING dintr-o valoare de șir sau coloană dată.
- SUBSTRING
Exemplu:
SELECT SUBSTRING('Test Input',1,4) as extracted_string; // Output Test
- INDICE SUBSTRING
Exemplu:
SELECT SUBSTRING_INDEX('Test Input','t',1) as extracted_string; //Output Tes
Q # 2) Ce este SUBSTRING_INDEX în MySQL?
Răspuns: Funcția SUBSTRING_INDEX este o variantă a funcției SUBSTRING. În timp ce în funcția normală SUBSTRING trebuie să menționați indexul ca număr în șirul de intrare, pentru funcția SUBSTRING_INDEX, puteți menționa fie un caracter, fie un sub șir mai mic de căutat.
Citire sugerată = >> Tutorial MySQL COUNT
Concluzie
În acest tutorial, am aflat despre funcțiile MySQL SUBSTRING și SUBSTRING_INDEX. Ambele funcții extrag un Substring împotriva șirului de intrare dat, dar funcționează într-un mod ușor diferit.
SUBSTRING se așteaptă ca indexul să fie numerele reale, în timp ce SUBSTRING_INDEX poate avea delimitatorul specificat ca un caracter sau o valoare șir, iar apoi MySQL Engine poate extrage împotriva șirului sau a caracterului necesar
Ambele aceste funcții sunt utilizate în mare măsură în cazul în care o coloană cu mai multe bucăți de informații poate fi extrasă în subcoloane folosind logica de extracție a șirurilor pe baza cerințelor corespunzătoare.
Lectură recomandată
- C # String Tutorial - Metode de șiruri cu exemple de coduri
- Metoda Java substring () - Tutorial cu exemple
- Șirul Java conține () Tutorial metodă cu exemple
- Java String compare Metoda cu exemple de programare
- Funcțiile șirului în C ++: getline, sub șir, lungimea șirului și altele
- Funcții de conversie a șirurilor C ++: șir la int și int la șir
- Funcții Python String
- Funcțiile MySQL CONCAT și GROUP_CONCAT cu exemple