V MariaDB můžete použít SUBSTRING_INDEX()
funkce vrátit vše před nebo za určitým znakem (nebo znaky) v řetězci.
Tato funkce přijímá tři argumenty; řetězec, oddělovač a počet výskytů tohoto oddělovače, který se má použít k určení podřetězce, který se má vrátit.
Příklady
Jak funkce funguje, můžeme vidět na následujících příkladech.
Vyberte Vše před
Chcete-li vybrat vše před určitým znakem, nastavte třetí argument na kladnou hodnotu:
SELECT SUBSTRING_INDEX('Red,Green,Blue', ',', 2);
Výsledek:
Red,Green
V tomto příkladu vybereme vše před druhou čárkou. To se provádí pomocí čárky (,
) jako oddělovač a 2
jako hrabě.
V tomto příkladu jsem použil čárku, ale mohl to být jakýkoli znak nebo řetězec:
SELECT SUBSTRING_INDEX('Red or Green or Blue', ' or ', 2);
Výsledek:
Red or Green
Vyberte možnost Vše po
Použijte zápornou hodnotu k výběru všeho po určitém znaku:
SELECT SUBSTRING_INDEX('Red,Green,Blue', ',', -2);
Výsledek:
Green,Blue
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.
Když oddělovač není nalezen
Pokud oddělovač v řetězci není nalezen, vrátí se celý řetězec.
Příklad:
SELECT SUBSTRING_INDEX('Red,Green,Blue', '-', 1);
Výsledek:
Red,Green,Blue
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('Red,Green,Blue', ',', 10);
Výsledek:
Red,Green,Blue
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('Red and green and blue', 'AND', 2);
Výsledek:
Red and green and blue
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('Red and green and blue', 'and', 2);
Výsledek:
Red and green