mysql substring substring_index functions with examples
Dozviete sa viac o funkciách MySQL SUBSTRING a SUBSTRING_INDEX a ich použití na niekoľkých príkladoch:
Funkcia MySQL Substring sa používa na extrakciu podreťazca alebo časti reťazca oproti vstupnému reťazcu. Ako naznačuje názov, funkcia Substring pracuje na vstupe s reťazcom a vracia menší podreťazec oproti zadaným možnostiam.
Dozvieme sa tiež o ďalšom variante SUBSTRING s názvom SUBSTRING_INDEX. Táto funkcia prijíma znak alebo reťazcovú hodnotu ako oddeľovač a vykoná vyhľadávanie podľa danej hodnoty oddeľovača.
Pozrime sa tiež na niektoré príklady, aby sme pochopili, ako je možné tieto funkcie použiť pri dotazovaní na údaje ako súčasť dotazov SELECT.
Čo sa dozviete:
SUBSTRING MySQL
Syntax:
// format 1 SELECT SUBSTRING('{String Value}', {start_index}, {count}); // format 2 SELECT SUBSTRING('{String Value}'FROM {start_index} for {count});
Existujú 2 spôsoby, ako môžeme použiť funkciu SUBSTRING.
Skôr ako sa ponoríme do príkladov, pochopme syntax.
- {Hodnota reťazca}: Toto je skutočná hodnota reťazca alebo názov stĺpca obsahujúceho reťazec, na ktorom sa má pracovať.
- {start_index}: start_index je index zľava alebo sprava, kde by sa začal podreťazec. Hodnoty môžu byť kladné alebo záporné podľa toho, či chceme extrahovať reťazec z ľavej alebo pravej strany. Na príkladoch to bude jasnejšie.
- {count}: Toto pole je voliteľné a určuje počet znakov z start_index pole, pre ktoré je potrebné Substring extrahovať. Ak nie je uvedené, potom celý reťazec začínajúci od zhody start_index by sa vrátil.
Formát2 je variáciou formátu1, až na to, že je čitateľnejší pomocou kľúčových slov FROM a FOR. Takže tu sa používa FROM predtým, ako sa zmienime o start_index hodnota a pred zmienkou o počítať .
Pozrime sa na niekoľko príkladov na pochopenie funkcie MySQL SUBSTRING.
Zoberme hodnotu vstupu reťazca ako Pomocník na testovanie softvéru
Indexy reťazcov budú vyzerať ako v nasledujúcej tabuľke
jeden | dva | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | jedenásť | 12 | 13 | 14 | pätnásť | 16 | 17 | 18 | 19 | dvadsať | dvadsaťjeden |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
S | alebo | f | t | v | do | r | je | T | je | s | t | i | n | g | H | je | l | p |
Príklad MySQL SUBSTRING
Bez grófa
Predpokladajme, že chceme extrahovať text Pomocníka z vyššie uvedeného reťazca - H má index 18
Pozrime sa na dopyt uvedený nižšie:
SELECT SUBSTRING('Software Testing Help', 18) as extracted_string; SELECT SUBSTRING('Software Testing Help' FROM 18) as extracted_string; // Output Help
Tu je dôležité poznamenať, že sme neuviedli žiadnu hodnotu pre počítať, ale stále dostávame správny reťazec - je to preto, že keď je počet vynechaný, vráti sa celý reťazec začínajúci od daného indexu.
V tomto prípade, ak spomenieme začiatočný index, napríklad, pre „T“ (index 10)
SELECT SUBSTRING('Software Testing Help', 10) as extracted_string; //Output Testing Help
Ako vidíte vyššie, výstup obsahuje celý text ‘Pomoc s testovaním’.
S grófom
Teraz sa pozrime na príklad, kde spomenieme počet znakov, ktoré sa majú vrátiť.
Predpokladajme, že chceme iba extrahovať slovo „Testovanie“ z reťazca „Pomocník pre testovanie softvéru“. Potom môžeme spomenúť počet ako - 7 (čo je dĺžka slova „Testovanie“)
Pozrime sa na dopyt uvedený nižšie:
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 sme popísali počiatočný index aj počet znakov ako súčasť dotazu, aby sme dosiahli požadovaný výsledok.
S negatívnymi hodnotami indexu
Zatiaľ sme pre príklady, ktoré sme videli, špecifikovali start_index ako kladná hodnota.
Môžeme tiež určiť start_index ako negatívny, čo jednoducho znamená, že namiesto počítania zľava sa motor MySQL pokúsi spočítať začiatočný index od konca reťazca.
Pozrime sa na príklad
Pre nášho reťazca „Pomocník pri testovaní softvéru“ pridajme riadok nižšie, ktorý identifikuje správne indexy
Ľ | jeden | dva | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | jedenásť | 12 | 13 | 14 | pätnásť | 16 | 17 | 18 | 19 | dvadsať | dvadsaťjeden |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
S | alebo | f | t | v | do | r | je | T | je | s | t | i | n | g | H | je | l | p | |||
R | dvadsaťjeden | dvadsať | 19 | 18 | 17 | 16 | pätnásť | 14 | 13 | 12 | jedenásť | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | dva | jeden |
Takže dolný riadok tu predstavuje správne indexy. Teraz predpokladajme, že chceme extrahovať slovo „Testovanie“ pomocou funkcie MySQL SUBSTRING so správnym indexom.
Pravý index pre „T“ v Testovaní je 12 (a ľavý index 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
Ako vidíte v príklade vyššie, uvedenie správnych indexov ako zápornej hodnoty prinesie stále rovnaký výsledok.
Index mimo hranice
Teraz vyskúšajte niektoré negatívne scenáre
- Ak zadaný parameter start_index neexistuje: tj zadaný index je za hranicami, potom by bol výstup prázdny.
SELECT SUBSTRING('Software Testing Help', 30, 2) as extracted_string; //output Empty String
- Keď je zadaný počet záporný alebo väčší ako celková dĺžka reťazca, potom by výstupom bol iba zvyšok reťazca (začínajúci zadaným parametrom start_index).
SELECT SUBSTRING('Software Testing Help', 5, 100) as extracted_string; //output ware Testing Help
Ako vidíte vyššie, tu bol počet uvedený ako 100, ale reťazec má iba 21 znakov.
- Skúsme ešte jeden scenár, v ktorom je počet uvedený ako negatívny.
SELECT SUBSTRING('Software Testing Help', 5, -20) as extracted_string; //output Empty String
Tiež tu nebude žiadna chyba a bude tu len prázdny reťazec, ktorý by bol výstupom.
MySQL SUBSTRING_INDEX
Toto je ďalší variant funkcie MySQL SUBSTRING.
Tu môžeme namiesto zmienky o skutočnej hodnote start_index jednoducho spomenúť znak a index a počet hľadaní oddeľovača pred vrátením výstupu.
Tu je dôležité poznamenať SUBSTRING_INDEX
Funkcia MySQL SUBSTRING INDEX:
SUBSTRING_INDEX({StringValue/Column},delimiter,n)
- {StringValue / Column}: Skutočný reťazcový vstup alebo názov stĺpca v dotaze SELECT.
- Oddeľovač: Je potrebné hľadať znak alebo podreťazec, aby ste ako výstup extrahovali zostávajúci reťazec. Táto hodnota rozlišuje veľké a malé písmená, preto by mala byť zadaná tak, ako je uvedená v skutočnom reťazci.
- n: Počet oddeľovačov - to znamená, koľkokrát sa má oddeľovač hľadať pred vrátením reťazca.
Poďme to pochopiť pomocou niekoľkých príkladov.
Pre všetky príklady, o ktorých budeme diskutovať v nasledujúcej časti nižšie, použijeme rovnaký reťazec „Pomocník pre testovanie softvéru“ ako náš Vstupný reťazec.
Hľadá sa postava
Pri vyhľadávaní znaku „T“ bude výstupom „Softvér“. Upozorňujeme, že bude zahrnutá aj ďalšia medzera za slovom Software.
SELECT SUBSTRING_INDEX('Software Testing Help', 'T', 1) as extracted_string; //Output Software
Vyhľadajte znak, ktorý sa objaví viackrát. Tu to je - „e“
SELECT SUBSTRING_INDEX('Software Testing Help', 'e', 1) as extracted_string; //Output Softwar
V tomto príklade: pretože sme zadali počet ako 1, výstupom bude String, kým sa nedosiahne prvý výskyt ‘e’.
Zmeňte počet na 2 pre rovnaký znak „e“.
SELECT SUBSTRING_INDEX('Software Testing Help', 'e', 2) as extracted_string; //Output Software T
Teraz vidíme, že sa vráti podreťazec až po druhý výskyt znaku „e“.
Zoberte si ďalší príklad na pochopenie toho, že V SUBSTRINGOVOM INDEXE sa rozlišujú veľké a malé písmená. Skúsme namiesto písmena „T“ písmeno „t“
ako implementovať binárny vyhľadávací strom v jave -
SELECT SUBSTRING_INDEX('Software Testing Help', 't', 1) as extracted_string; //Output Sof
Hľadá sa reťazec
Na hľadanie reťazca namiesto znaku môžeme použiť funkciu SUBSTRING INDEX. Poďme hľadať slovo „Testovanie“.
SELECT SUBSTRING_INDEX('Software Testing Help', 'Testing', 1) as extracted_string; //Output Software
Hľadá sa neexistujúci reťazec
Používanie SUBSTRING INDEX s reťazcom, ktorý neexistuje.
SELECT SUBSTRING_INDEX('Software Testing Help', 'abc', 1) as extracted_string; //Output Software Testing Help
Tu môže byť výstup trochu neočakávaný. Ale pretože MySQL Engine nemôže nájsť požadovanú zhodu, vráti celý reťazec ako výstup.
Hľadanie znaku alebo reťazca v opačnom poradí
Podobne ako funkcia SUBSTRING, aj funkcia SUBSTRING INDEX umožňuje mať uvedený počet ako záporné čísla. To znamená, že namiesto prechádzania zľava doprava sa MySQL Engine pokúsi nájsť zhodu sprava doľava.
Pochopte to pomocou niekoľkých príkladov.
SELECT SUBSTRING_INDEX('Software Testing Help', 'T', -1) as extracted_string; //Output esting Help
Vo vyššie uvedenom príklade môžete vidieť, že oddeľovač je „T“, zatiaľ čo počet je -1. Výstupom by teda bol Podreťazec sprava, kým sa nezíska prvá zhoda pre písmeno „T“.
Aplikácie funkcie MySQL SUBSTRING
Pri dotazovaní na údaje z 1 alebo viacerých tabuliek všeobecne používame funkcie MySQL String. Môže sa použiť na rozdelenie hodnôt v stĺpci alebo iba na zobrazenie základných hodnôt podľa potreby.
Príklad: Predpokladajme, že máme tabuľku s podrobnosťami o zamestnancovi, ktorá sa skladá z id, mena a adresy.
Stĺpec s adresou má formát - {HouseNo}, {StreetName}
Nižšie je uvedený Skript na vytvorenie tabuľky a vloženie nepravých údajov:
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);
Pomocou funkcie MySQL SUBSTRING získate číslo domu extrahované zo stĺpca adresy, ako je uvedené nižšie.
SELECT name, SUBSTRING_INDEX(address,',',1) as house_no, address, age from employee_details
Výkon:
názov | dom_č | adresa | Vek |
---|---|---|---|
Akash malhotra | 22 | 22, kolónia obrany | 24 |
Steve Wilson | 12/4 | 12/4, Wilson Street | 28 |
Monica Singh | 190 | 190, Smith Lane | 32 |
Vo vyššie uvedenom dotaze vidíte, že sme na získanie čísla domu zo stĺpca adresy použili funkciu SUBSTRING_INDEX a ako oddeľovač sme použili znak „.
Podobne ako v tomto prípade existuje veľa aplikácií, kde by sme chceli extrahovať reťazec, aby sme načítali nejaké zmysluplné informácie z väčšieho vstupu reťazca alebo hodnoty stĺpca.
často kladené otázky
Otázka 1) Ktorá funkcia MySQL vráti pozíciu prvého výskytu SUBSTRINGU v reťazci?
Odpoveď: MySQL poskytuje 2 funkcie na vrátenie alebo extrahovanie SUBSTRINGU z danej hodnoty reťazca alebo stĺpca.
- PODČASŤ
Príklad:
SELECT SUBSTRING('Test Input',1,4) as extracted_string; // Output Test
- PODROBNÝ INDEX
Príklad:
SELECT SUBSTRING_INDEX('Test Input','t',1) as extracted_string; //Output Tes
Otázka 2) Čo je SUBSTRING_INDEX v MySQL?
Odpoveď: Funkcia SUBSTRING_INDEX je variantom funkcie SUBSTRING. Zatiaľ čo v normálnej funkcii SUBSTRING musíte vo vstupnom reťazci uviesť index ako číslo, pre funkciu SUBSTRING_INDEX môžete uviesť buď znak, alebo menší podreťazec, ktorý sa má vyhľadať.
Navrhované čítanie = >> Výukový program MySQL COUNT
Záver
V tomto tutoriáli sme sa dozvedeli o funkciách MySQL SUBSTRING a SUBSTRING_INDEX. Obe funkcie extrahujú podreťazec oproti danému vstupnému reťazcu, fungujú však trochu iným spôsobom.
SUBSTRING očakáva index ako skutočné čísla, zatiaľ čo SUBSTRING_INDEX môže mať oddeľovač zadaný ako hodnotu znaku alebo reťazca a potom môže MySQL stroj extrahovať požadovaný reťazec alebo znak.
Obe tieto funkcie sa zväčša používajú tam, kde je možné stĺpec s viacerými informáciami extrahovať do pod stĺpcov pomocou logiky extrakcie reťazcov na základe vhodných požiadaviek.
Odporúčané čítanie
- C # String Tutorial - Metódy reťazcov s príkladmi kódu
- Metóda Java substring () - návod s príkladmi
- Java String obsahuje () Výukový program metód s príkladmi
- Metóda Java String compareTo s príkladmi programovania
- Funkcie reťazca v C ++: getline, podreťazec, dĺžka reťazca a ďalšie
- Funkcie konverzie reťazcov v C ++: reťazec na int a int na reťazec
- Funkcie reťazca Python
- Funkcie MySQL CONCAT a GROUP_CONCAT s príkladmi