I SQLite, substring()
er et alias for substr()
.
Det returnerer en understreng fra en streng, baseret på en given startplacering i strengen. Der kræves to argumenter, og et tredje valgfrit argument accepteres.
substring()
navngivning blev introduceret i SQLite 3.34.0, som blev frigivet den 1. december 2020. Årsagen til at substring()
syntaks blev introduceret var for kompatibilitet med SQL Server.
Syntaks
Så du kan nu kalde funktionen på en af følgende måder:
substr(X,Y,Z)
substr(X,Y)
substring(X,Y,Z)
substring(X,Y)
X
er den fulde streng, der indeholder den understreng, du vil returnere.Y
er placeringen af det første tegn i understrengen, som du vil returnere fra den streng.Z
er antallet af tegn, du vil have returneret. Hvis det udelades, returneres alle efterfølgende tegn (startende fraY
).
Hvis X
er en streng, så henviser tegnindekser til faktiske UTF-8-tegn. Hvis X
er en BLOB, så refererer indeksene til bytes.
Som nævnt er substring()
syntaks er kun tilgængelig fra SQLite 3.34.0.
Eksempel med 3 argumenter
Her er et grundlæggende eksempel til at demonstrere, hvordan man bruger substring()
med tre argumenter.
SELECT substring('Dolemite', 3, 4);
Resultat:
lemi
Eksempel med 2 argumenter
Hvis jeg udelader det tredje argument fra det foregående eksempel, får jeg følgende resultat.
SELECT substring('Dolemite', 3);
Resultat:
lemite
Negativt udgangspunkt
Du kan angive en negativ værdi for det andet argument. Når du gør dette, findes det første tegn i understrengen ved at tælle fra højre i stedet for fra venstre.
SELECT substring('Dolemite', -3);
Resultat:
ite
Her er et andet eksempel, denne gang angiver jeg længden af understrengen.
SELECT substring('Dolemite', -7, 4);
Resultat:
olem
Så negative værdier har samme effekt, som når du bruger substring()
funktion i MySQL. MySQL har også en substr()
funktion, som er et synonym for dens substring()
fungere.
Dette er dog anderledes end, hvordan SQL Server behandler negative værdier. Når du sender en negativ værdi til substring()
i SQL Server vil den simpelthen begynde at tælle på et imaginært punkt, før strengen begynder.
Negativ delstrenglængde
Det foregående eksempel brugte et negativt udgangspunkt. I dette eksempel vil jeg bruge en negativ længde. Med dette mener jeg, at jeg vil give en negativ værdi for det tredje argument.
SELECT substring('Dolemite', -1, -4);
Resultat:
emit
Så at angive en negativ værdi for det tredje argument resulterer i, at tegnene før startpunktet returneres.
Dette gælder også, når det andet argument er en positiv værdi.
SELECT substring('Dolemite', 6, -4);
Resultat:
olem
Databaseeksempel
Her er et eksempel, der bruger substring()
i en databaseforespørgsel mod Chinook-eksempeldatabasen.
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 dette tilfælde returnerede jeg de første ti tegn fra Name
kolonne. Jeg returnerede også det fulde indhold af Name
kolonne for at sammenligne resultaterne.