SQLite Fonctions de chaîne : REPLACE, SUBSTR, TRIM, ROUND

SQLite est équipé par défaut d'une liste de fonctions intégrées dans le SQLite bibliothèque. Vous pouvez également ajouter d'autres fonctions personnalisées à l'aide du langage C pour étendre les fonctions principales.

Notez que, pour tous les exemples suivants, vous devez exécuter sqlite3.exe et ouvrir une connexion à l'exemple de base de données de manière fluide :

Étape 1) Dans cette étape,

  1. Ouvrez Poste de travail et accédez au répertoire suivant «C:\sqlite" puis
  2. ouvert "sqlite3.exe"

SQLite Fonctions de chaîne

Étape 2) Ouvrez la base de données "TutorielsSampleDB.db» par la commande suivante :

SQLite Fonctions de chaîne

Vous êtes maintenant prêt à exécuter n'importe quel question et essayez toutes les requêtes utilisées dans les sections suivantes.

Trouver la LONGUEUR d'une chaîne dans SQLite

Pour trouver la longueur d’une chaîne, utilisez LENGTH(X) où X est une valeur de chaîne. Si X est une valeur nulle, la fonction de longueur renverra une valeur nulle.

Vous pouvez également utiliser la fonction length avec des valeurs numériques pour obtenir la longueur de la valeur numérique.

Mise en situation :

Dans l'exemple suivant, nous allons essayer la syntaxe de la fonction LENGTH avec les valeurs suivantes :

SELECT LENGTH('A string'), LENGTH(NULL), LENGTH(20), LENGTH(20.5);

Cela vous donnera :

Trouver la LONGUEUR d'une chaîne dans SQLite

Le résultat est le suivant :

  • LENGTH('A string') renvoie 8 qui est la longueur de la chaîne « A string ».
  • LENGTH(NULL) renvoie null.
  • LENGTH(20) renvoie 2, car 20 fait 2 longueurs.
  • LONGUEUR(20.5) renvoie 4 ; La virgule flottante "." est compté comme un caractère, vous aurez donc quatre caractères – les 3 caractères qui correspondent à la longueur des nombres. Plus un caractère supplémentaire pour la virgule flottante « . ».

Étui à langer avec fonction UPPER et fonction LOWER

UPPER(X) renverra la même chaîne x, mais elle représentera tous les caractères de la chaîne en caractères majuscules.

LOWER(X) renverra la même chaîne x, mais elle représentera tous les caractères de la chaîne en petits caractères.

UPPER et LOWER renvoient des valeurs nulles si vous leur transmettez une valeur nulle.

Si vous transmettez des valeurs numériques à UPPER ou LOWER, les deux renverront la valeur numérique exacte.

Mise en situation :

SELECT UPPER('a string'), LOWER('A STRING'), UPPER(20), LOWER(20), UPPER(NULL), LOWER(NULL);

Cela vous donnera :

Exemple de fonctions UPPER et LOWER dans SQLite

Le résultat est le suivant :

  • UPPER('une chaîne') renvoie la chaîne "un string" en représentation en majuscule "UN STRING" .
  • LOWER('A STRING') renvoie la chaîne "UN STRING" en représentation en lettres minuscules "un string" .
  • UPPER(20), LOWER(20) renvoie le même nombre, car ils n'ont aucun effet sur les nombres.
  • UPPER(NULL), LOWER(NULL) renvoie null car nous leur avons transmis une valeur nulle.

SQLite Fonction SUBSTR

La fonction SUBSTR renvoie un nombre spécifique de chaînes, à partir d'une position spécifique. Vous pouvez passer trois opérandes à la fonction, comme ceci «SOUS-TRS(X,Y,Z)" comme suit:

  • X est la chaîne littérale ou la colonne de chaîne à analyser. Vous pouvez transmettre une valeur littérale (valeur statique) ou un nom de colonne, et dans ce cas, la valeur sera lue à partir des valeurs de la colonne.
  • Y est la position de départ pour soustraire la chaîne à partir de celle-ci.
  • Z est le nombre de caractères à analyser à partir de la position spécifique Y. Ce nombre est facultatif, vous pouvez l'ignorer, et dans ce cas, SQLite soustraira la chaîne à partir de la position Y indiquant la fin de la chaîne.

Mise en situation :

Dans la requête suivante, nous utiliserons la fonction SUBSTR pour obtenir les 4 caractères à partir du deuxième caractère à partir des noms des étudiants :

SELECT StudentName, SUBSTR(StudentName, 2, 4), SUBSTR(StudentName, 2)
FROM Students;

Cela vous donnera :

Exemple de fonction SUBSTR dans SQLite

  • SUBSTR(NomÉtudiant, 2, 4) sous-chaînez la chaîne "Nom d'étudiant" à partir du deuxième caractère, et renvoie les 4 caractères suivants.
  • Cependant, dans la fonction SUBSTR(NomÉtudiant, 2) nous n'avons pas spécifié de numéro pour les caractères à renvoyer, c'est pourquoi SQLite a renvoyé tous les caractères restants dans le "Nom d'étudiant» en partant de la deuxième position.

Changer des parties d'une chaîne avec SQLite Fonction REMPLACER

REPLACE est utilisé pour remplacer chaque chaîne survenue sur une autre chaîne par une chaîne.

REPLACE(X, Y, Z) – X est le littéral ou la colonne de la chaîne d’entrée. Y est la chaîne à remplacer par la chaîne Z. Notez qu'elle remplacera toute occurrence de la chaîne Y par Z, pas une seule.

Mise en situation :

Dans la requête suivante, nous remplacerons toutes les occurrences de la chaîne «xx" avec la chaîne "SQLite"

SELECT REPLACE('xx is very lightweight, xx is easy to learn', 'xx', 'SQLite');

Cela vous donnera

Exemple de fonction REPLACE dans SQLite

  • La fonction de remplacement a remplacé toutes les chaînes "xx" avec la chaîne "SQLite" .
  • La sortie sera donc "SQLite est très léger, SQLite est facile à apprendre ».

Couper les espaces vides avec SQLite Fonction TRIM

TRIM supprime les espaces vides au début ou à la fin de la chaîne. Cela ne supprimera aucun espace au milieu de la chaîne, uniquement depuis le début ou la fin.

Mise en situation :

Dans la requête suivante, nous utiliserons la fonction TRIM pour supprimer les espaces vides du début et de la fin de la chaîne.

Notez que l'opérateur de concaténation « || » est utilisé pour ajouter un « ; » supplémentaire jusqu'à la fin de la chaîne. Pour vous montrer que les espaces vides ont été supprimés dans la fenêtre noire.

SELECT TRIM('      SQLite is easy to learn        ') || ';';

Cela vous donnera :

Exemple de fonction TRIM dans SQLite

  • Remarquez comment les espaces vides ont été supprimés au début et à la fin de la chaîne, remplacés par ' ; ' à la fin.

Lire des valeurs absolues avec SQLite Fonction ABS

La fonction ABS renvoie la valeur absolue d'une valeur numérique. La valeur absolue est la valeur numérique sans aucun signe positif ou négatif. ABS(X) renvoie une valeur dépendant de la valeur de X comme suit :

  • La valeur absolue de X si X est une valeur numérique.
  • Une valeur NULL si X est une valeur nulle.
  • Valeur « 0.0 » si X est une chaîne.

Mise en situation :

Dans la requête suivante, nous allons essayer d'obtenir la valeur absolue d'une chaîne, un nombre et une valeur nulle à l'aide de la fonction ABS :

SELECT ABS(-2), ABS(+2), ABS('a string'), ABS(null);

Cela vous donnera :

Exemple de fonction ABS dans SQLite

Les résultats comme suit :

  • ABS(-2), ABS(+2) renvoie 2, car 2 est la valeur absolue pour « -2 » et « +2 ».
  • ABS('a string') renvoie « 0.0 » car vous avez transmis une valeur de chaîne et non une valeur numérique.
  • ABS(null) renvoie null car vous lui avez transmis une valeur nulle.

Arrondir les valeurs avec la fonction ROUND dans SQLite

Les nombres décimaux sont des nombres à virgule flottante « ». dessus, par exemple, « 20.5 », « 8.65 ». La partie à gauche de la virgule flottante est appelée la partie entière et la partie à droite de la virgule flottante est la partie décimale.

Les nombres entiers sont des nombres sans virgule flottante. Par exemple, « 20 », « 8 ».

ROUND(X) convertit les valeurs décimales ou les colonnes X en nombres entiers uniquement. La partie entière qui est la partie à gauche du point décimal sera renvoyée et tous les chiffres à droite du point décimal seront supprimés.

Mise en situation :

Dans la requête suivante, nous allons essayer la fonction ROUND avec différentes options :

SELECT ROUND(12.4354354), ROUND(12.4354354, 2), ROUND(NULL), ROUND('a string');

Cela vous donnera :

Exemple de fonction ROUND dans SQLite

Le résultat comme suit :

  • ROUND(12.4354354) – renvoie la valeur « 12 », car vous n'avez pas spécifié le nombre de chiffres. Donc, SQLite supprimé toute la partie décimale.
  • ROUND(12.4354354, 2) – renvoie la valeur « 12.44 », car vous avez spécifié seulement 2 chiffres à arrondir qui sont les deux chiffres à droite de la virgule décimale.
  • ROUND(NULL) – renvoie null car vous lui avez transmis une valeur nulle.
  • ROUND('a string') – renvoie la valeur « 0.0 » car vous lui avez transmis une valeur de chaîne.

Trouver le type de données de l'expression avec la fonction TYPEOF

Si vous souhaitez connaître le type d'une colonne ou une valeur littérale, vous pouvez utiliser la fonction TYPEOF pour le faire.

La fonction TYPEOF(X), de par son nom, renvoie le type de données de l'expression X. Elle renvoie une valeur de chaîne indiquant le type de données de X. Elle renvoie la valeur en fonction des types de données, qu'il s'agisse d'une valeur « NULL », réel, texte, entier, …, etc.

Mise en situation :

Dans la requête suivante, nous allons essayer la fonction TYPEOF avec différents types de valeurs littérales :

SELECT TYPEOF(null), TYPEOF(12), TYPEOF(12.5), TYPEOF('a string');

Cela vous donnera :

Exemple de fonction TYPEOF dans SQLite

Les résultats renvoyés sont les suivants :

  • TYPEOF(null) – renvoie null car vous lui avez transmis une valeur nulle.
  • TYPEOF(12) – renvoie un entier car 12 est un nombre entier.
  • TYPEOF(12.5) – renvoie REAL car 12.5 est un nombre réel.
  • TYPEOF('a string') – renvoie le texte car « une chaîne » est un texte.

Trouver le dernier enregistrement inséré avec SQLite LAST_INSERT_ROWID

SQLite attribue une clé entière (Id) pour toutes les lignes de toutes les tables. Ce numéro est utilisé pour identifier de manière unique ces lignes.

Lorsque vous INSÉREZ une nouvelle ligne sur une table, SQLite attribuera au rowid une valeur unique.

Si la table a une clé primaire déclarée sur une seule colonne et que cette colonne est de type de données INTEGER, alors cette valeur de colonne sera utilisée comme rowid.

La fonction LAST_INSERT_ROWID() renvoie le ROW_ID de la dernière ligne insérée dans n'importe quelle table de la base de données. Notez que cela ne prend aucun opérande.

Mise en situation :

Dans l'exemple suivant, nous exécuterons la fonction LAST_INSERT_ROWID() comme suit :

SELECT LAST_INSERT_ROWID();

Cela vous donnera :

Exemple de fonction LAST_INSERT_ROWID dans SQLite

  • LAST_INSERT_ROWID() renvoie 0 car aucune ligne n'est insérée dans aucune table dans la connexion actuelle à la base de données.

Maintenant, insérons un nouvel étudiant et exécutons à nouveau la fonction LAST_INSERT_ROWID() après l'instruction insert, comme ceci :

INSERT INTO Students VALUES(11, 'guru', 1, '1998-10-12');
SELECT LAST_INSERT_ROWID();

Cela vous donnera :

Exemple de fonction LAST_INSERT_ROWID dans SQLite

  • Après avoir inséré un nouvel étudiant avec l'identifiant 11, LAST_INSERT_ROWID() renverra le dernier identifiant de ligne inséré qui est 11.

Obtenir la version de votre SQLite bibliothèque

Pour obtenir la version de votre SQLite bibliothèque, vous devez appeler la fonction SQLITE_VERSION().

Mise en situation :

Voyons quelle est la version du SQLite nous l'utilisons en exécutant la commande suivante :

SELECT SQLITE_VERSION();

Cela vous donnera :

Exemple pour obtenir la version de votre SQLite bibliothèque

SQLITE_VERSION() renvoie 3.9.2 qui est la version du SQLite nous utilisons.

Création de fonctions définies par l'utilisateur et agrégation de fonctions définies par l'utilisateur

Pour certains utilisateurs, le SQLite les fonctions de base sont limitées. Ils devront peut-être ajouter des fonctions personnalisées pour leurs besoins personnalisés.

SQLite ne prend pas en charge la création de fonctions définies par l'utilisateur. Contrairement à d'autres systèmes de gestion de bases de données, vous ne pouvez pas créer de fonctions définies par l'utilisateur dans SQLite directement.

Cependant, vous pouvez créer une fonction à l'aide de langages de programmation comme C#, C, PHP ou C++ et j'ai attaché cette fonction avec le noyau SQLite fonctions dans le SQLite bibliothèque elle-même, en utilisant "sqlite3_create_function" fonction. Vous pourrez ensuite les réutiliser dans votre base de données.

Mise en situation :

Dans l'exemple suivant, nous allons créer une fonction définie par l'utilisateur en utilisant C# langage de programmation et ajoutez-le à SQLite les fonctions:

[SQLiteFunction(Name = "DoubleValue", Arguments = 1, FuncType = FunctionType.Scalar)]
public class DoubleValue: SQLiteFunction
{
    public override object Invoke(object[] args)
    {
        return args[0] * 2;
    }
}

Cet extrait de code est écrit dans le Langage de programmation C#; il crée une fonction C# en utilisant le code C#.

Le nom de la fonction sera «DoubleValeur" il prend un paramètre et renvoie sa valeur multipliée par 2.

Notez que C# ajoute automatiquement cette fonction à SQLite. Tout ce dont vous avez besoin est de compiler et d'exécuter ce code. Ensuite, C# ajoutera cette fonction du même nom à la liste des SQLite les fonctions. Ensuite, vous pouvez utiliser cette fonction dans SQLite.

De la même manière en utilisant des langages de programmation comme C#, C, PHP ou C++, vous pouvez également créer des fonctions globales définies par l'utilisateur. Qui sont utilisés pour étendre les fonctions d'agrégation dans SQLite et utilisez-les pour créer des fonctions d'agrégation personnalisées.

Résumé

  • SQLite fournit un ensemble complet de fonctions intégrées qui facilitent le travail avec les tables et les colonnes de la base de données, comme nous l'avons vu. Vous pouvez utiliser ces fonctions avec des colonnes ainsi qu'avec des valeurs littérales dans n'importe quelle expression de vos requêtes SQL.
  • Vous pouvez également utiliser la fonction length avec des valeurs numériques pour obtenir la longueur de la valeur numérique.
  • UPPER et LOWER renvoient des valeurs nulles si vous leur transmettez une valeur nulle.
  • La fonction SUBSTR renvoie un nombre spécifique de chaînes, à partir d'une position spécifique.
  • REPLACE est utilisé pour remplacer chaque chaîne survenue sur une autre chaîne par une chaîne.
  • TRIM supprime les espaces vides au début ou à la fin de la chaîne.
  • La fonction ABS renvoie la valeur absolue d'une valeur numérique.
  • ROUND(X) convertit les valeurs décimales ou les colonnes X en nombres entiers uniquement.
  • La fonction TYPEOF(X), de par son nom, renvoie le type de données de l'expression X.
  • La fonction LAST_INSERT_ROWID() renvoie le ROW_ID de la dernière ligne insérée dans n'importe quelle table de la base de données.