mysql substring substring_index functions with examples
Lär dig mer om MySQL SUBSTRING och SUBSTRING_INDEX-funktioner och dess användning med flera exempel:
MySQL Substring-funktionen används för att extrahera en substring eller delsträng mot inmatningssträngen. Som namnet antyder fungerar Substring-funktionen på en strängingång och returnerar en mindre delsträng mot de angivna alternativen.
Vi kommer också att lära oss om en annan variant av SUBSTRING som heter SUBSTRING_INDEX. Denna funktion accepterar tecken eller strängvärde som avgränsare och utför en sökning mot det angivna avgränsningsvärdet.
Vi kommer också att titta på några exempel för att förstå hur dessa funktioner kan användas när du frågar om data som en del av SELECT-frågorna.
Vad du kommer att lära dig:
MySQL SUBSTRING
Syntax:
// format 1 SELECT SUBSTRING('{String Value}', {start_index}, {count}); // format 2 SELECT SUBSTRING('{String Value}'FROM {start_index} for {count});
Det finns två sätt på vilka vi kan använda SUBSTRING-funktionen.
Låt oss förstå syntaxen innan vi dyker in i exemplen.
- {Strängvärde}: Detta är det faktiska strängvärdet eller kolumnnamnet som innehåller strängen som ska bearbetas.
- {start_index}: start_index är indexet från vänster eller höger där Substring skulle startas. Värdena kan vara positiva eller negativa beroende på om vi vill extrahera sträng från vänster respektive höger sida. Detta kommer att bli tydligare med exemplen.
- {räkna}: Det här fältet är valfritt och anger antalet tecken från start_index fält för vilket substrängen måste extraheras. Om det inte nämns, börjar hela strängen från matchningen start_index skulle återlämnas.
Format2 är en variant av format1 förutom att det är mer läsbart med hjälp av nyckelord FRÅN och FOR. Så här används FROM innan man nämner start_index värde och FOR används innan man nämner räkna .
Låt oss se några exempel för att förstå funktionen MySQL SUBSTRING.
Låt oss ta stränginmatningsvärdet som Hjälp för testning av programvara
Strängindexen ser ut som nedanför tabellen
1 | två | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | elva | 12 | 13 | 14 | femton | 16 | 17 | 18 | 19 | tjugo | tjugoett |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
S | eller | f | t | i | till | r | är | T | är | s | t | i | n | g | H | är | l | sid |
MySQL SUBSTRING Exempel
Utan greve
Antag att vi vill extrahera hjälptexten från strängen ovan - H har ett index på 18
Låt oss se frågan nedan:
SELECT SUBSTRING('Software Testing Help', 18) as extracted_string; SELECT SUBSTRING('Software Testing Help' FROM 18) as extracted_string; // Output Help
Det är viktigt att notera här att vi inte har nämnt något värde för räkna, men vi får fortfarande rätt sträng - det beror på att när räkningen utelämnas returneras hela strängen från det angivna indexet.
I det här fallet, om vi nämner startindex, till exempel, för 'T' (Index 10)
SELECT SUBSTRING('Software Testing Help', 10) as extracted_string; //Output Testing Help
Som du kan se ovan innehåller utdata hela texten ”Testing Help”.
Med greve
Låt oss nu titta på ett exempel där vi kommer att nämna antalet tecken som ska returneras.
Anta att vi bara vill extrahera ”Testing” -ordet från String ”Software Testing Help”. Sedan kan vi nämna räkna som - 7 (vilket är längden på ordet 'Testing)
Låt oss se frågan nedan:
SELECT SUBSTRING('Software Testing Help', 10, 7) as extracted_string; SELECT SUBSTRING('Software Testing Help' FROM 10 FOR 7) as extracted_string; //Output Testing
Här har vi beskrivit både startindex och antal tecken som en del av frågan för att få önskat resultat.
Med negativa indexvärden
Hittills har vi för de exempel vi har sett specificerat start_index som ett positivt värde.
Vi kan också ange start_index som negativ, vilket helt enkelt betyder att istället för att räkna från vänster kommer MySQL-motorn att försöka räkna startindex från slutet av strängen.
Låt oss se ett exempel
För vår String 'Software Testing Help', låt oss lägga till en rad nedan för att identifiera rätt index
L | 1 | två | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | elva | 12 | 13 | 14 | femton | 16 | 17 | 18 | 19 | tjugo | tjugoett |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
S | eller | f | t | i | till | r | är | T | är | s | t | i | n | g | H | är | l | sid | |||
R | tjugoett | tjugo | 19 | 18 | 17 | 16 | femton | 14 | 13 | 12 | elva | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | två | 1 |
Så den nedersta raden här representerar rätt index. Antag att vi vill extrahera ordet ”Testing” med MySQL SUBSTRING-funktionen med rätt index.
Det högra indexet för 'T' vid testning är 12 (och det vänstra indexet är 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 exemplet ovan kommer det fortfarande att ge samma resultat att nämna rätt index som ett negativt värde.
Index utanför gränserna
Prova nu några negativa scenarier
- När angiven start_index inte finns: dvs. det angivna indexet är utanför gränserna, då skulle utmatningen vara tom.
SELECT SUBSTRING('Software Testing Help', 30, 2) as extracted_string; //output Empty String
- När det angivna antalet är negativt eller mer än strängens totala längd, skulle utmatningen bara vara resten av strängen (startar den angivna start_index).
SELECT SUBSTRING('Software Testing Help', 5, 100) as extracted_string; //output ware Testing Help
Du kan se ovan, här nämndes räkningen som 100, men strängen är bara 21 tecken lång.
- Låt oss prova ytterligare ett scenario med räkningen som negativ.
SELECT SUBSTRING('Software Testing Help', 5, -20) as extracted_string; //output Empty String
Även här kommer det inte att finnas något fel och det kommer bara att finnas en tom sträng som skulle vara utdata.
MySQL SUBSTRING_INDEX
Detta är en annan variant av MySQL SUBSTRING-funktionen.
Här, istället för att nämna det faktiska värdet av start_index, kan vi helt enkelt nämna karaktären och indexet och antalet gånger som avgränsaren behöver sökas innan vi returnerar utdata.
En viktig punkt att notera här är SUBSTRING_INDEX
MySQL SUBSTRING INDEX-funktion:
SUBSTRING_INDEX({StringValue/Column},delimiter,n)
- {StringValue / Column}: Faktisk strängingång eller kolumnnamnet i SELECT-frågan.
- Avgränsare: Det är karaktären eller substratet som måste letas efter, för att extrahera den återstående strängen som utdata. Det här värdet är skiftlägeskänsligt, så det bör anges som det visas i den aktuella strängen.
- n: Antal avgränsare - dvs antalet gånger som avgränsaren ska sökas innan du returnerar strängen.
Låt oss förstå detta med hjälp av några exempel.
Vi kommer att använda samma sträng 'Software Testing Help' som vår ingångssträng för alla exempel som vi ska diskutera i nästa avsnitt nedan.
Söker efter en karaktär
När du söker efter karaktär ”T” skulle utdata vara ”Programvara”. Observera att det extra utrymmet efter ordet Software också kommer att inkluderas.
SELECT SUBSTRING_INDEX('Software Testing Help', 'T', 1) as extracted_string; //Output Software
Sök efter ett tecken som visas mer än en gång. Här är det - 'e'
SELECT SUBSTRING_INDEX('Software Testing Help', 'e', 1) as extracted_string; //Output Softwar
I det här exemplet: eftersom vi har specificerat räkningen som 1, skulle utmatningen vara Sträng tills den första förekomsten av 'e' har uppnåtts.
Ändra räkningen till 2 för samma tecken ”e”.
SELECT SUBSTRING_INDEX('Software Testing Help', 'e', 2) as extracted_string; //Output Software T
Nu kan vi se, Substring upp till den andra förekomsten av karaktär 'e' returneras.
Ta ett annat exempel för att förstå att SUBSTRING INDEX är skiftlägeskänslig. Låt oss försöka med bokstaven 't' istället för 'T'
hur man får ett falskt e-postmeddelande
SELECT SUBSTRING_INDEX('Software Testing Help', 't', 1) as extracted_string; //Output Sof
Söker efter en sträng
Vi kan använda SUBSTRING INDEX-funktionen för att söka efter en sträng istället för ett tecken. Låt oss söka efter ordet ”Testing”.
SELECT SUBSTRING_INDEX('Software Testing Help', 'Testing', 1) as extracted_string; //Output Software
Söker efter en icke-befintlig sträng
Använda SUBSTRING INDEX med en sträng som inte finns.
SELECT SUBSTRING_INDEX('Software Testing Help', 'abc', 1) as extracted_string; //Output Software Testing Help
Produktionen kan vara lite oväntad här. Men eftersom MySQL-motorn inte kan hitta önskad matchning returnerar den hela strängen som utdata.
Söker efter karaktär eller sträng i omvänd ordning
På samma sätt som SUBSTRING-funktionen tillåter SUBSTRING INDEX-funktionen också att räkna som negativa tal. Detta innebär att istället för att gå från vänster till höger, kommer MySQL Engine att försöka hitta en matchning från höger till vänster.
Förstå detta med hjälp av några exempel.
SELECT SUBSTRING_INDEX('Software Testing Help', 'T', -1) as extracted_string; //Output esting Help
I exemplet ovan kan du se att avgränsaren är 'T' medan räkningen är -1. Så produktionen skulle vara Substring från höger tills den första matchningen för bokstaven 'T' erhålls.
Tillämpningar av MySQL SUBSTRING-funktion
Vi använder vanligtvis MySQL-strängfunktionerna när vi frågar efter data från 1 eller flera tabeller. Den kan användas för att dela värden i en kolumn, eller bara för att visa de väsentliga värdena efter behov.
Exempel: Antag att vi har en anställd detaljerad tabell som består av id, namn och adress.
Och adresskolumnen är av format - {HouseNo}, {StreetName}
Nedan finns skriptet för att skapa en tabell och infoga dummydata:
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);
Använd MySQL SUBSTRING-funktionen för att få hus nummer extraheras från adresskolumnen som visas nedan.
SELECT name, SUBSTRING_INDEX(address,',',1) as house_no, address, age from employee_details
Produktion:
namn | hus Nej | adress | ålder |
---|---|---|---|
Akash malhotra | 22 | 22, försvarskoloni | 24 |
Steve Wilson | 12/4 | 12/4, Wilson Street | 28 |
Monica Singh | 190 | 190, Smith Lane | 32 |
I ovanstående fråga kan du se att vi har använt SUBSTRING_INDEX-funktionen för att hämta husnumret från adresskolumnen och vi har använt ”,” som avgränsare.
I likhet med detta kan det finnas många applikationer där vi vill extrahera strängen för att hämta meningsfull information från en större strängingång eller kolumnvärdet.
Vanliga frågor
F # 1) Vilken MySQL-funktion returnerar positionen för den första förekomsten av en SUBSTRING i strängen?
Svar: MySQL tillhandahåller två funktioner för att returnera eller extrahera en SUBSTRING ur ett givet sträng- eller kolumnvärde.
- SUBSTRING
Exempel:
SELECT SUBSTRING('Test Input',1,4) as extracted_string; // Output Test
- SUBSTRING INDEX
Exempel:
SELECT SUBSTRING_INDEX('Test Input','t',1) as extracted_string; //Output Tes
F # 2) Vad är SUBSTRING_INDEX i MySQL?
Svar: SUBSTRING_INDEX-funktionen är en variant av SUBSTRING-funktionen. Medan du i den normala SUBSTRING-funktionen måste nämna indexet som ett tal i inmatningssträngen, kan du för SUBSTRING_INDEX-funktionen nämna antingen ett tecken eller en mindre delsträng som ska sökas efter.
Föreslagen läsning = >> MySQL COUNT-handledning
Slutsats
I denna handledning har vi lärt oss om MySQL SUBSTRING och SUBSTRING_INDEX-funktioner. Båda funktionerna extraherar en substring mot den angivna inmatningssträngen men fungerar på ett något annat sätt.
SUBSTRING förväntar sig indexet som de faktiska siffrorna, medan SUBSTRING_INDEX kan ha avgränsaren angiven som ett tecken eller ett strängvärde, och sedan kan MySQL-motorn extrahera mot den önskade matchande strängen eller tecknet.
Båda dessa funktioner används till stor del där en kolumn med flera informationsstycken kan extraheras i underkolumner med hjälp av strängextraktionslogik baserat på lämpliga krav.
Rekommenderad läsning
- C # Stränghandledning - Strängmetoder med kodexempel
- Java substring () Metod - Handledning med exempel
- Java String innehåller () Metodhandledning med exempel
- Java-sträng jämför med metod med programmeringsexempel
- Strängfunktioner i C ++: getline, substring, stränglängd och mer
- C ++ - strängomvandlingsfunktioner: sträng till int & int till sträng
- Python-strängfunktioner
- MySQL CONCAT och GROUP_CONCAT-funktioner med exempel