Dans SQLite, substring()
est un alias pour substr()
.
Il renvoie une sous-chaîne à partir d'une chaîne, en fonction d'un emplacement de départ donné dans la chaîne. Deux arguments sont requis et un troisième argument facultatif est accepté.
La substring()
le nommage a été introduit dans SQLite 3.34.0, qui a été publié le 1er décembre 2020. La raison pour laquelle le substring()
La syntaxe a été introduite pour la compatibilité avec SQL Server.
Syntaxe
Vous pouvez donc maintenant appeler la fonction de l'une des manières suivantes :
substr(X,Y,Z)
substr(X,Y)
substring(X,Y,Z)
substring(X,Y)
X
est la chaîne complète qui contient la sous-chaîne que vous souhaitez renvoyer.Y
est l'emplacement du premier caractère de la sous-chaîne que vous souhaitez renvoyer à partir de cette chaîne.Z
est le nombre de caractères que vous voulez renvoyer. S'il est omis, tous les caractères suivants sont renvoyés (à partir deY
).
Si X
est une chaîne, alors les indices de caractères font référence aux caractères UTF-8 réels. Si X
est un BLOB alors les indices font référence à des octets.
Comme mentionné, le substring()
la syntaxe n'est disponible qu'à partir de SQLite 3.34.0.
Exemple avec 3 arguments
Voici un exemple de base pour montrer comment utiliser substring()
avec trois arguments.
SELECT substring('Dolemite', 3, 4);
Résultat :
lemi
Exemple avec 2 arguments
Si j'omets le troisième argument de l'exemple précédent, j'obtiens le résultat suivant.
SELECT substring('Dolemite', 3);
Résultat :
lemite
Point de départ négatif
Vous pouvez fournir une valeur négative pour le deuxième argument. Lorsque vous faites cela, le premier caractère de la sous-chaîne est trouvé en comptant à partir de la droite plutôt que de la gauche.
SELECT substring('Dolemite', -3);
Résultat :
ite
Voici un autre exemple, cette fois je précise la longueur de la sous-chaîne.
SELECT substring('Dolemite', -7, 4);
Résultat :
olem
Ainsi, les valeurs négatives ont le même effet que lors de l'utilisation de la substring()
fonction dans MySQL. MySQL a aussi un substr()
fonction, qui est synonyme de sa substring()
une fonction.
Cependant, cela diffère de la façon dont SQL Server traite les valeurs négatives. Lorsque vous passez une valeur négative à substring()
dans SQL Server, il commencera simplement à compter à un point imaginaire avant le début de la chaîne.
Longueur de la sous-chaîne négative
L'exemple précédent utilisait un point de départ négatif. Dans cet exemple, je vais utiliser une longueur négative. Je veux dire par là que je vais fournir une valeur négative pour le troisième argument.
SELECT substring('Dolemite', -1, -4);
Résultat :
emit
Ainsi, si vous fournissez une valeur négative pour le troisième argument, les caractères précédant le point de départ seront renvoyés.
Cela s'applique également lorsque le deuxième argument est une valeur positive.
SELECT substring('Dolemite', 6, -4);
Résultat :
olem
Exemple de base de données
Voici un exemple qui utilise substring()
dans une requête de base de données sur l'exemple de base de données Chinook.
SELECT
substring(Name, 1, 10),
Name
FROM Artist
ORDER BY Name DESC
LIMIT 10;
Résultat :
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
Dans ce cas, j'ai renvoyé les dix premiers caractères du Name
colonne. J'ai également renvoyé le contenu complet du Name
colonne afin de comparer les résultats.