Můžete použít MySQL SUBSTRING_INDEX()
funkce vrátit vše před nebo za určitým znakem (nebo znaky) v řetězci.
Tato funkce vám umožňuje určit oddělovač, který se má použít, a můžete určit, který z nich (v případě, že je v řetězci více než jeden).
Syntaxe
Zde je syntaxe:
SUBSTRING_INDEX(str,delim,count)
Kde str
je řetězec delim
je oddělovač (od kterého chcete mít podřetězec vlevo nebo vpravo) a count
určuje, který oddělovač (v případě, že se oddělovač v řetězci vyskytuje vícekrát).
Všimněte si, že oddělovač může být jeden znak nebo více znaků.
Příklad 1 – Vyberte vše vlevo
Chcete-li vybrat vše dříve určitý znak, použijte kladnou hodnotu:
SELECT SUBSTRING_INDEX('Cats,Dogs,Rabbits', ',', 2);
Výsledek:
Cats,Dogs
V tomto příkladu vybereme vše před druhou čárkou. To se provádí pomocí čárky (,
) jako oddělovač a 2
jako hrabě.
Příklad 2 – Vyberte vše vpravo
Chcete-li vybrat vše po určitý znak, musíte použít zápornou hodnotu:
SELECT SUBSTRING_INDEX('Cats,Dogs,Rabbits', ',', -2);
Výsledek:
Dogs,Rabbits
Všimněte si, že záporná hodnota znamená, že se bude počítat zprava, poté vyberte podřetězec napravo od oddělovače.
Co když se oddělovač neshoduje?
Pokud oddělovač v řetězci není nalezen, řetězec je jednoduše vrácen celý.
Příklad:
SELECT SUBSTRING_INDEX('Cats,Dogs,Rabbits', '-', 1);
Výsledek:
Cats,Dogs,Rabbits
V tomto případě je vrácen celý řetězec, protože jsme použili pomlčku (-
) jako oddělovač, ale v řetězci nebyly žádné pomlčky.
Stejný výsledek bychom dostali, kdyby řetězec ano obsahovat oddělovač, ale náš count
překračuje počet oddělovačů v řetězci.
Příklad:
SELECT SUBSTRING_INDEX('Cats,Dogs,Rabbits', ',', 10);
Výsledek:
Cats,Dogs,Rabbits
Rozlišovat malá a velká písmena
SUBSTRING_INDEX()
Funkce provádí vyhledávání oddělovače s rozlišením velkých a malých písmen. To znamená, že oddělovač musí být správný velikost písmen, než se bude shodovat.
Nesprávný případ
Zde je příklad, kdy případ neodpovídá:
SELECT SUBSTRING_INDEX('Cats and Dogs and Rabbits', 'AND', 2);
Výsledek:
Cats and Dogs and Rabbits
Dostaneme celý řetězec v plné výši.
Správný případ
Nyní je zde stejný příklad, ale případ se shoduje:
SELECT SUBSTRING_INDEX('Cats and Dogs and Rabbits', 'and', 2);
Výsledek:
Cats and Dogs