sql >> Databáze >  >> RDS >> Mysql

Jak rozdělit řetězec v MySQL

Problém:

Chtěli byste rozdělit řetězec v MySQL.

Příklad:

Naše databáze obsahuje tabulku s názvem Student s údaji ve sloupcích id a name .

id jméno
1 Ann Smith
2 Mark Twain
3 Brad Green

Načteme data z názvu sloupce a rozdělíme je na firstname a lastname .

Řešení:

Použijeme SUBSTRING_INDEX() funkce. Zde je dotaz:

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

Zde je výsledek dotazu:

křestní jméno příjmení
Ann Smith
Označit Twain
Brad Zelená

Diskuse:

Funkce SUBSTRING_INDEX() přebírá 3 argumenty:zdrojový řetězec, oddělovač a počet výskytů oddělovače.

zdrojový řetězec je řetězec, který bychom chtěli rozdělit.

Oddělovač je řetězec znaků, které SUBSTRING_INDEX() funkce hledá ve zdrojovém řetězci. Když je nalezen, označuje místo, kde končí podřetězec. Oddělovačem může být jeden znak, například mezera, ale může to být také vzor, ​​který se skládá ze dvou nebo více znaků. Tento vzor rozlišuje malá a velká písmena; tedy záleží, zda jsou dané znaky velká nebo malá. Pamatujte, že oddělovač je řetězec, takže musí být napsán v uvozovkách (‘‘).

Posledním argumentem je počet výskytů . Udává, kolikrát je třeba sladit vzor oddělovače. Všimněte si, že počet výskytů může být záporná hodnota. Když je záporné, počítáme výskyty oddělovače zprava. Když je počet kladné číslo, počítáme zleva.

Funkce vypíše každý znak zdrojového řetězce, dokud se oddělovač neshoduje s počtem výskytů daným počtem výskytů.

Pokud spustíme následující dotaz:

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

výstup bude:

Ann

Jak můžete vidět, funkce vrátila všechny znaky, dokud nebyla nalezena první mezera zleva.

V našem příkladu získáme jako křestní jméno studenta všechny znaky až po první mezeru zleva a jako příjmení studenta všechny znaky až po první mezeru zprava.


  1. Systém resetování hesla v PHP

  2. MySQL Workbench

  3. 7 způsobů, jak vrátit všechny tabulky s primárním klíčem na SQL Server

  4. Průvodce návrhem databáze pro Správce úloh v MySQL