SQLite
 sql >> Base de données >  >> RDS >> SQLite

SQLite SUBSTRING() expliqué

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 de Y ).

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.