sql >> Database >  >> RDS >> Mysql

Een string splitsen in MySQL

Probleem:

Je wilt een string splitsen in MySQL.

Voorbeeld:

Onze database heeft een tabel met de naam Student met gegevens in de kolommen id en name .

id naam
1 Ann Smith
2 Mark Twain
3 Brad Groen

Laten we de gegevens uit de kolomnaam halen en deze opsplitsen in firstname en lastname .

Oplossing:

We gebruiken de SUBSTRING_INDEX() functie. Dit is de vraag:

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

Dit is het resultaat van de zoekopdracht:

voornaam achternaam
Ann Smith
Markeren Twee
Brad Groen

Discussie:

De functie SUBSTRING_INDEX() heeft 3 argumenten:de brontekenreeks, het scheidingsteken en het aantal keren dat het scheidingsteken voorkomt.

De brontekenreeks is de string die we willen splitsen.

Het scheidingsteken is een tekenreeks die de SUBSTRING_INDEX() functie zoekt in de bronstring. Wanneer gevonden, geeft het de plaats aan waar de subtekenreeks eindigt. Het scheidingsteken kan een enkel teken zijn, zoals een spatie, maar het kan ook een patroon zijn dat uit twee of meer tekens bestaat. Dit patroon is hoofdlettergevoelig; dat wil zeggen, het maakt uit of de gegeven tekens hoofdletters of kleine letters zijn. Onthoud dat het scheidingsteken een tekenreeks is, dus het moet tussen aanhalingstekens (‘’) worden geschreven.

Het laatste argument is het aantal gevallen . Het geeft het aantal keren aan dat het scheidingstekenpatroon moet worden aangepast. Houd er rekening mee dat het aantal exemplaren een negatieve waarde kan zijn. Als het negatief is, tellen we het voorkomen van het scheidingsteken van rechts. Als de telling een positief getal is, tellen we vanaf links.

De functie voert elk teken van de bronreeks uit totdat het scheidingsteken overeenkomt met het aantal keren dat wordt gegeven door het aantal keren dat het voorkomt.

Als we de volgende query uitvoeren:

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

de uitvoer zal zijn:

Ann

Zoals je kunt zien, retourneerde de functie alle tekens totdat de eerste spatie van links werd gevonden.

In ons voorbeeld halen we als voornaam van de leerling alle karakters op tot de eerste spatie van links en als achternaam van de leerling alle karakters tot aan de eerste spatie van rechts.


  1. Array in IN()-clausule orakel PLSQL

  2. SQLAlchemy - SQLite voor testen en Postgresql voor ontwikkeling - Hoe overzetten?

  3. Hoe parallelle plannen opstarten - Deel 5

  4. Hoe elke rij te selecteren waar de kolomwaarde NIET verschillend is