In SQLite, substring()
is een alias voor substr()
.
Het retourneert een subtekenreeks van een tekenreeks, gebaseerd op een bepaalde startlocatie binnen de tekenreeks. Er zijn twee argumenten vereist en een derde optioneel argument wordt geaccepteerd.
De substring()
naamgeving is geïntroduceerd in SQLite 3.34.0, die op 1 december 2020 werd uitgebracht. De reden dat de substring()
syntaxis werd geïntroduceerd was voor compatibiliteit met SQL Server.
Syntaxis
U kunt de functie nu dus op een van de volgende manieren aanroepen:
substr(X,Y,Z)
substr(X,Y)
substring(X,Y,Z)
substring(X,Y)
X
is de volledige tekenreeks die de subtekenreeks bevat die u wilt retourneren.Y
is de locatie van het eerste teken van de subtekenreeks die u van die tekenreeks wilt retourneren.Z
is het aantal tekens dat u wilt retourneren. Indien weggelaten, worden alle volgende tekens geretourneerd (vanafY
).
Als X
is een string, dan verwijzen karakterindexen naar daadwerkelijke UTF-8 karakters. Als X
is een BLOB, dan verwijzen de indices naar bytes.
Zoals gezegd, de substring()
syntaxis is alleen beschikbaar vanaf SQLite 3.34.0.
Voorbeeld met 3 argumenten
Hier is een eenvoudig voorbeeld om te demonstreren hoe substring()
te gebruiken met drie argumenten.
SELECT substring('Dolemite', 3, 4);
Resultaat:
lemi
Voorbeeld met 2 argumenten
Als ik het derde argument uit het vorige voorbeeld weglaat, krijg ik het volgende resultaat.
SELECT substring('Dolemite', 3);
Resultaat:
lemite
Negatief startpunt
U kunt een negatieve waarde opgeven voor het tweede argument. Wanneer u dit doet, wordt het eerste teken van de subtekenreeks gevonden door vanaf rechts te tellen in plaats van links.
SELECT substring('Dolemite', -3);
Resultaat:
ite
Hier is nog een voorbeeld, deze keer specificeer ik de lengte van de substring.
SELECT substring('Dolemite', -7, 4);
Resultaat:
olem
Negatieve waarden hebben dus hetzelfde effect als bij het gebruik van de substring()
functie in MySQL. MySQL heeft ook een substr()
functie, wat een synoniem is van zijn substring()
functie.
Dit is echter anders dan hoe de SQL Server omgaat met negatieve waarden. Wanneer u een negatieve waarde doorgeeft aan substring()
in SQL Server begint het gewoon te tellen op een denkbeeldig punt voordat de string begint.
Negatieve subtekenreekslengte
In het vorige voorbeeld werd een negatief uitgangspunt gebruikt. In dit voorbeeld ga ik een negatieve lengte gebruiken. Hiermee bedoel ik dat ik een negatieve waarde ga geven voor het derde argument.
SELECT substring('Dolemite', -1, -4);
Resultaat:
emit
Dus het verstrekken van een negatieve waarde voor het derde argument resulteert in het retourneren van de tekens voorafgaand aan het startpunt.
Dit geldt ook als het tweede argument een positieve waarde is.
SELECT substring('Dolemite', 6, -4);
Resultaat:
olem
Databasevoorbeeld
Hier is een voorbeeld dat gebruikmaakt van substring()
in een databasequery tegen de Chinook-voorbeelddatabase.
SELECT
substring(Name, 1, 10),
Name
FROM Artist
ORDER BY Name DESC
LIMIT 10;
Resultaat:
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
In dit geval heb ik de eerste tien tekens van de Name
. geretourneerd kolom. Ik heb ook de volledige inhoud van de Name
. teruggestuurd kolom om de resultaten te vergelijken.