sql >> Databasteknik >  >> RDS >> Mysql

Hur man delar en sträng i MySQL

Problem:

Du vill dela en sträng i MySQL.

Exempel:

Vår databas har en tabell som heter Student med data i kolumnerna id och name .

id namn
1 Ann Smith
2 Mark Twain
3 Brad Green

Låt oss hämta data från kolumnnamnet och dela upp den i firstname och lastname .

Lösning:

Vi använder SUBSTRING_INDEX() fungera. Här är frågan:

SELECT
SUBSTRING_INDEX(name,' ',1) AS firstname,
SUBSTRING_INDEX(name,' ',-1) AS lastname
FROM Student

Här är resultatet av frågan:

förnamn efternamn
Ann Smith
Markera Twain
Brad Grön

Diskussion:

Funktionen SUBSTRING_INDEX() tar 3 argument:källsträngen, avgränsaren och antalet förekomster av avgränsaren.

Källsträngen är strängen som vi skulle vilja dela.

avgränsaren är en teckensträng som SUBSTRING_INDEX() funktion letar efter i källsträngen. När den hittas indikerar den platsen där delsträngen slutar. Avgränsaren kan vara ett enstaka tecken såsom ett mellanslag, men det kan också vara ett mönster som består av två eller flera tecken. Detta mönster är skiftlägeskänsligt; det vill säga det spelar roll om de givna tecknen är stora eller små bokstäver. Kom ihåg att avgränsaren är en sträng, så den måste skrivas med citattecken ('').

Det sista argumentet är antalet förekomster . Den indikerar antalet gånger avgränsningsmönstret måste matchas. Observera att antalet förekomster kan vara ett negativt värde. När den är negativ räknar vi förekomsterna av avgränsaren från höger. När räkningen är ett positivt tal, räknar vi från vänster.

Funktionen matar ut varje tecken i källsträngen tills avgränsaren matchar antalet gånger som ges av antalet förekomster.

Om vi ​​kör följande fråga:

SELECT
SUBSTRING_INDEX('Ann Smith',' ',1);

utgången blir:

Ann

Som du kan se returnerade funktionen alla tecken tills det första utrymmet från vänster hittades.

I vårt exempel hämtar vi som elevens förnamn alla tecken upp till första blanksteg från vänster och som elevens efternamn alla tecken upp till första blanksteg från höger.


  1. Utvärdera när ett uttryck i en fråga utvärderas

  2. Beräknad kolumn i EF Code First

  3. Måste jag skydda mig mot SQL-injektion om jag använde en rullgardinsmeny?

  4. SQLSTATE[HY093]:Ogiltigt parameternummer:parametern har inte definierats