I SQLite, substring()
är ett alias för substr()
.
Den returnerar en delsträng från en sträng, baserat på en given startplats i strängen. Två argument krävs, och ett tredje valfritt argument accepteras.
substring()
namngivning introducerades i SQLite 3.34.0, som släpptes den 1 december 2020. Anledningen till att substring()
syntaxen introducerades var för kompatibilitet med SQL Server.
Syntax
Så du kan nu anropa funktionen på något av följande sätt:
substr(X,Y,Z)
substr(X,Y)
substring(X,Y,Z)
substring(X,Y)
X
är den fullständiga strängen som innehåller delsträngen du vill returnera.Y
är platsen för det första tecknet i delsträngen som du vill returnera från den strängen.Z
är antalet tecken som du vill ha tillbaka. Om det utelämnas, returneras alla efterföljande tecken (med början frånY
).
Om X
är en sträng hänvisar teckenindex till faktiska UTF-8-tecken. Om X
är en BLOB hänvisar indexen till bytes.
Som nämnts, substring()
syntax är endast tillgänglig från SQLite 3.34.0.
Exempel med 3 argument
Här är ett grundläggande exempel för att visa hur man använder substring()
med tre argument.
SELECT substring('Dolemite', 3, 4);
Resultat:
lemi
Exempel med två argument
Om jag utelämnar det tredje argumentet från föregående exempel får jag följande resultat.
SELECT substring('Dolemite', 3);
Resultat:
lemite
Negativ utgångspunkt
Du kan ange ett negativt värde för det andra argumentet. När du gör detta hittas det första tecknet i delsträngen genom att räkna från höger snarare än från vänster.
SELECT substring('Dolemite', -3);
Resultat:
ite
Här är ett annat exempel, den här gången anger jag längden på delsträngen.
SELECT substring('Dolemite', -7, 4);
Resultat:
olem
Så negativa värden har samma effekt som när du använder substring()
funktion i MySQL. MySQL har också en substr()
funktion, som är en synonym till dess substring()
fungera.
Detta skiljer sig dock från hur SQL Server behandlar negativa värden. När du skickar ett negativt värde till substring()
i SQL Server börjar den helt enkelt räknas vid en tänkt punkt innan strängen börjar.
Negativ delsträngslängd
I det föregående exemplet användes en negativ utgångspunkt. I det här exemplet kommer jag att använda en negativ längd. Med detta menar jag att jag ska ge ett negativt värde för det tredje argumentet.
SELECT substring('Dolemite', -1, -4);
Resultat:
emit
Så att ge ett negativt värde för det tredje argumentet resulterar i att tecknen som föregår startpunkten returneras.
Detta gäller även när det andra argumentet är ett positivt värde.
SELECT substring('Dolemite', 6, -4);
Resultat:
olem
Databasexempel
Här är ett exempel som använder substring()
i en databasfråga mot Chinook-exempeldatabasen.
SELECT
substring(Name, 1, 10),
Name
FROM Artist
ORDER BY Name DESC
LIMIT 10;
Resultat:
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
I det här fallet returnerade jag de första tio tecknen från Name
kolumn. Jag returnerade också hela innehållet i Name
kolumn för att jämföra resultaten.