V SQLite substring()
je alias pro substr()
.
Vrací podřetězec z řetězce na základě daného počátečního umístění v řetězci. Dva argumenty jsou povinné a třetí volitelný argument je akceptován.
substring()
pojmenování bylo zavedeno ve verzi SQLite 3.34.0, která byla vydána 1. prosince 2020. Důvod, proč substring()
syntaxe byla zavedena kvůli kompatibilitě se serverem SQL.
Syntaxe
Nyní tedy můžete funkci volat kterýmkoli z následujících způsobů:
substr(X,Y,Z)
substr(X,Y)
substring(X,Y,Z)
substring(X,Y)
X
je úplný řetězec obsahující podřetězec, který chcete vrátit.Y
je umístění prvního znaku podřetězce, který chcete z tohoto řetězce vrátit.Z
je počet znaků, které chcete vrátit. Pokud je vynechán, vrátí se všechny následující znaky (počínajeY
).
Pokud X
je řetězec, pak znaky indexy odkazují na skutečné znaky UTF-8. Pokud X
je BLOB, pak indexy odkazují na bajty.
Jak již bylo zmíněno, substring()
syntaxe je dostupná pouze od SQLite 3.34.0.
Příklad se 3 argumenty
Zde je základní příklad, který ukazuje, jak používat substring()
se třemi argumenty.
SELECT substring('Dolemite', 3, 4);
Výsledek:
lemi
Příklad se 2 argumenty
Pokud vynechám třetí argument z předchozího příkladu, dostanu následující výsledek.
SELECT substring('Dolemite', 3);
Výsledek:
lemite
Negativní výchozí bod
Pro druhý argument můžete zadat zápornou hodnotu. Když to uděláte, první znak podřetězce je nalezen počítáním zprava, nikoli zleva.
SELECT substring('Dolemite', -3);
Výsledek:
ite
Zde je další příklad, tentokrát specifikuji délku podřetězce.
SELECT substring('Dolemite', -7, 4);
Výsledek:
olem
Takže záporné hodnoty mají stejný účinek jako při použití substring()
funkce v MySQL. MySQL má také substr()
funkce, která je synonymem pro její substring()
funkce.
To se však liší od toho, jak SQL Server zachází se zápornými hodnotami. Když předáte zápornou hodnotu do substring()
v SQL Server jednoduše začne počítat v pomyslném bodě před začátkem řetězce.
Délka záporného podřetězce
Předchozí příklad používal negativní výchozí bod. V tomto příkladu použiji zápornou délku. Tím chci říct, že poskytnu zápornou hodnotu pro třetí argument.
SELECT substring('Dolemite', -1, -4);
Výsledek:
emit
Takže zadání záporné hodnoty pro třetí argument má za následek návrat znaků předcházejících počátečnímu bodu.
To platí také v případě, že druhý argument je kladná hodnota.
SELECT substring('Dolemite', 6, -4);
Výsledek:
olem
Příklad databáze
Zde je příklad, který používá substring()
v databázovém dotazu proti vzorové databázi Chinook.
SELECT
substring(Name, 1, 10),
Name
FROM Artist
ORDER BY Name DESC
LIMIT 10;
Výsledek:
substring(Name, 1, 10) Name ---------------------- --------------------------------- Zeca Pagod Zeca Pagodinho Youssou N' Youssou N'Dour Yo-Yo Ma Yo-Yo Ma Yehudi Men Yehudi Menuhin Xis Xis Wilhelm Ke Wilhelm Kempff Whitesnake Whitesnake Vinícius E Vinícius E Qurteto Em Cy Vinícius E Vinícius E Odette Lara Vinícius D Vinícius De Moraes & Baden Powell
V tomto případě jsem vrátil prvních deset znaků z Name
sloupec. Také jsem vrátil celý obsah Name
za účelem porovnání výsledků.