[SQL Basic] Comment utiliser les fonctions de chaîne dans SQL —Mon SQL CONCAT, LENGTH, SUBSTR

# 17. Marketing / Analyse de données pour débutants

Dans ce didacticiel, nous étudierons les fonctions que vous pouvez utiliser pour manipuler les données de chaîne facilement et rapidement. Il existe de nombreux types de fonctions pour les chaînes, et parfois différentes bases de données telles que Oracle, SQL Server et MySQL utilisent des méthodes différentes. Nous allons couvrir les données de chaîne basées sur MySQL.

#Glossaire:

EssLeçon 3: SELECT / FROM / WHERE
Leçon 4: COMMANDE PAR
Ess Leçon 5: ET / OU / EN
EssLeçon 6: J'aime
EssLeçon 7: AS / DISTINCT / IS NULL
EssLeçon 9: COUNT / SUM
EssLeçon 10: AVG / MAX / MIN
EssLeçon 11: GROUPE PAR / AYANT
EssLeçon 12: CAS
EssLeçon 13: INNER JOIN
EssLeçon 14: JOINDRE EXTERIEUR GAUCHE / JOINDRE EXTERIEUR DROIT
EssLeçon 15: Sous-requêtes
Leçon 16: DATE_FORMAT / DATEDIFF

#Table des matières

Requête 1. Combinez les colonnes de prénom et de nom du client pour créer une nouvelle colonne de nom complet (CONCAT)
SELECT customer_id, CONCAT (prénom_nom, ““, nom_nom) AS nom_complet FROM client;
Requête 2. Comptons la longueur du nom complet du client (LENGTH)
SELECT customer_id, CONCAT (prénom, ““, dernier nom) AS nom complet, LENGTH (CONCAT (prénom, nom)) AS nom_longueur FROM client;
Requête 3. Imprimons seulement trois caractères du nom du client (SUBSTR)
SELECT customer_id, CONCAT (prénom, ““, nom de famille) AS nom complet, SUBSTR (CONCAT (prénom, ““, nom de famille), 1, 3) AS short_name FROM client;

Q1. Combinez les colonnes de prénom et de nom du client pour créer une nouvelle colonne de nom complet (CONCAT)

Voyons d’abord la table des clients.

SELECT * FROM client;

Le tableau montre les noms et prénoms du client stockés dans différentes colonnes. Vous aurez peut-être besoin du nom complet ensemble dans les requêtes plus complexes. Il est donc utile de savoir comment connecter les deux en une seule ligne. Et pour combiner les deux en MySQL, vous pouvez utiliser CONCAT.

#CONCAT

Commencez par spécifier la colonne à afficher: ID client
SELECT client_id

Nous souhaitons également connaître le nom complet. Nous allons donc utiliser CONCAT pour associer le prénom et le nom de famille. Pour ajouter un espace entre les deux, nous devons en spécifier un et le mettre en évidence par des doubles guillemets (“”). Assurez-vous de séparer les trois par des virgules:
CONCAT (prénom, "", nom)

Renommez cette nouvelle colonne en Nom complet:
AS nom complet

Et enfin, fermez-le avec le nom de la table et un point-virgule. Votre requête complète et finale ressemblera à ceci:
SELECT customer_id, CONCAT (prenom, "", dernier nom) AS nom complet FROM client;

Utilisez F9 dans SQLGate pour formater votre requête!

Vous pouvez également ajouter du texte supplémentaire dans la requête CONCAT comme ceci:

SELECT customer_id, CONCAT ("Bonjour. Je suis", prénom, ““, dernier nom) AS nom_full FROM client;

Salut! Ravi de vous rencontrer!

Q2. Comptons la longueur du nom complet du client (caractères du prénom et du nom).

Parfois, il est nécessaire de calculer la longueur d'une chaîne. Nous allons utiliser la requête LENGTH pour le faire. Cette fonction accepte les données de chaîne en tant que valeur d'entrée, calcule son nombre de caractères et génère des nombres (calculés sur la base d'octets).

#LONGUEUR

Vous pouvez utiliser des chaînes ou des colonnes de chaînes directement dans la fonction LENGTH, mais pour cet exemple, nous allons utiliser la requête CONCAT que nous venons d'apprendre. Dans l’exemple précédent, le résultat de la fonction CONCAT était une chaîne correspondant au nom du client (nom complet) afin que nous puissions l’utiliser sans problème. Mais si CONCAT est utilisé pour des calculs numériques, vous ne pourrez pas reproduire cette requête.

Voici un aperçu visuel de ce que fait cette requête:

Commencez donc par définir les colonnes à afficher dans la fonction SELECT:
SELECT customer_id, CONCAT (prénom, ““, dernier nom) AS nom complet

Et ajoutez ensuite la fonction LONGUEUR. Nous voulons compter tous les caractères du nom et du prénom, sans compter l'espace ajouté précédemment, nous allons donc réécrire notre fonction CONCAT pour LENGTH. Voici à quoi cela devrait ressembler:
LONGUEUR (CONCAT (prénom, nom))

Continuez et renommez la nouvelle colonne en tant que Longueur du nom et fermez la requête:
AS name_length FROM client;

Voici à quoi ressemble la requête finale:

SELECT customer_id, CONCAT (prénom, ““, dernier nom) AS nom complet, LENGTH (CONCAT (prénom, nom)) AS nom_longueur FROM client;

Génial! Mais pourquoi avons-nous fait cela? Pourquoi avons-nous besoin de connaître la longueur des noms de clients? Nous devons comprendre cette fonction pour notre question Practice Time. Vous le verrez apparaître plus tard. Continuons pour le moment ~

Q3. Imprimons seulement trois caractères du nom du client (les trois premiers et les trois derniers).

La fonction SUBSTR est utilisée pour n’extraire qu’une partie de la chaîne complète. Il vous permet également de définir une position de départ et de spécifier le nombre de caractères à extraire.

#SUBSTR

Continuons à construire sur notre requête précédente. Commencez par SELECT:
SELECT ID_client, CONCAT (prénom, ““, nom)

N'oubliez pas de renommer la nouvelle colonne:
AS nom complet

Ensuite, branchez SUBSTR et à l'intérieur, dupliquez votre fonction CONCAT. Ici, nous avons deux nouveaux facteurs à prendre en compte. Premièrement, nous devons indiquer la position de départ. Comme nous voulons que cela commence au tout début, nous utiliserons le chiffre 1. Ensuite, nous devons indiquer combien de caractères du nom que nous voulions imprimer. Disons seulement 3 caractères:
SUBSTR (CONCAT (prénom, ““, nom), 1, 3)

Voici une démonstration visuelle de ce que SUBTR fait:

Renommez également cette colonne:
AS nom court

Fermez-le avec une fonction FROM:
Du client;

Votre requête finale devrait ressembler à ceci:

SELECT customer_id, CONCAT (prénom, ““, nom de famille) AS nom complet, SUBSTR (CONCAT (prénom, ““, nom de famille), 1, 3) AS short_name FROM client;

Alors maintenant, nous ne voyons que les 3 premiers caractères de chaque nom! MARY SMITH est devenue juste MAR. Nice!

Supposons que nous ne voulions imprimer que les 3 derniers caractères d’une chaîne. Comment nous y prendrions-nous? C'est un peu difficile. La longueur de tous les noms étant différente, nous ne pouvons pas compter la position exacte. Mais ce que nous pouvons faire, c'est revenir en arrière! Il vous suffit de dire à SQLGate que vous souhaitez revenir en arrière de 3 positions sur tous les noms et commencer par là. Nous pouvons le faire en écrivant négatif 3 (-3). Ça devrait ressembler à ça:

SELECT customer_id, CONCAT (prénom, ““, nom de famille) AS nom complet, SUBSTR (CONCAT (prénom, ““, nom de famille), 1, 3) AS short_name FROM client;

Vous pouvez définir votre position de départ à l'avant de la chaîne en utilisant des nombres positifs ou à l'arrière de la chaîne en utilisant des nombres négatifs.

#Entrainement

Imprimer une liste de noms de clients et de leurs courriels censurés (à l'aide de CONCAT, SUBSTR, REPEAT, LENGTH)

Lorsque nous traitons des informations personnelles du client, telles que le nom, l’adresse et le numéro de téléphone, nous devons les traiter sans les divulguer. En utilisant les fonctions que nous avons apprises jusqu’à présent, utilisons la table customer pour remplacer l’email du client par une chaîne qui ne peut pas être identifiée.

Nous allons utiliser CONCAT et SUBSTR pour censurer le courrier électronique. Tout d’abord, utilisez CONCAT pour obtenir le nom complet du client. Ensuite, utilisez conjointement CONCAT et SUBSTR pour récupérer le courrier électronique, utilisez REPEAT et INSTR pour le censurer et utilisez AS pour renommer la colonne.

REPEAT: répète une chaîne autant de fois que désiré
INSTR: retourne la position de la première occurrence d'une chaîne dans une autre chaîne

Voici à quoi ressemble le résultat:

Vous vous sentez un peu confus? Décrivons-le:

Commencez avec votre fonction SELECT et suivez-la avec la première colonne à afficher, la colonne ID client:
SELECT client_id

Utilisez CONCAT pour combiner le nom et le prénom des clients et renommez la nouvelle colonne en nom complet:
CONCAT (prenom, ““, nom de famille) AS nom complet

Utilisez à nouveau CONCAT pour créer la colonne email secrète en procédant comme suit:

  1. Imprimer les 3 premières lettres d'un email client en utilisant SUBSTR
    (SUBSTR (email, 1, 3)
  2. Avec INSTR, nous allons identifier une chaîne (email) et spécifier un certain caractère (@) comme position de départ que nous voulons dans la chaîne.
    INSTR (email, '@')
  3. Maintenant, puisque nous voulons censurer le courrier électronique, nous devons insérer des astérisques (*) pour indiquer la longueur restante (caractères) après les 3 originaux que nous avons imprimés. Cette longueur étant différente pour chaque courrier électronique, nous devons le répéter autant de fois que nécessaire. Nous allons donc utiliser REPEAT. Nous allons également soustraire 1 (-1) pour le symbole @ et 3 (-3) pour les 3 textes imprimés du courrier électronique, de sorte que les informations ne soient pas censurées.
    REPEAT ('*', INSTR (email) -1-3)
  4. Ajoutez le nom de domaine à la chaîne et fermez la fonction CONCAT:
    «@ Sakilacustomer.org»)
  5. Renommez la nouvelle colonne et écrivez le nom de la table:
    AS secret_email FROM client;

Lorsque vous exécutez la requête (F5), les 3 premiers caractères de leur courrier électronique sont imprimés, suivis des astérisques qui censurent le reste des informations personnelles! Voici la requête complète ensemble:

SELECT customer_id, CONCAT (prénom, ““, dernier nom) AS nom complet, CONCAT (SUBSTR (email, 1, 3), REPEAT ('*', INSTR (email, '@') - 1–3), '@sakilacustomer. org ') AS secret_email FROM client;

Cela peut sembler un peu complexe, mais il n’est pas difficile de définir chaque chaîne que vous voulez voir en une fois, puis de la combiner avec la fonction CONCAT. Bien que nous n'ayons démontré qu'une pratique couramment utilisée de ces fonctions, il existe de nombreuses autres manières de les utiliser. Expérimentez avec eux pour trouver le bon

Si vous souhaitez davantage de conseils visuels, consultez notre didacticiel vidéo ci-dessous:

# Tutorial Video

Cliquez pour télécharger SQLGate Free Version

# [SQL Basic Series] - Marketing / Analyse de données pour débutants

1. Qu'est-ce que SQL? - Introduction à la base de données
2. Télécharger SQLGate et se connecter à une base de données
3. Quel type de données se trouve dans la table ‘film’? - SELECT / FROM / WHERE
4. Comment trier les listes de films par prix (tarif de location)? - COMMANDÉ PAR
5. Puis-je louer un film de 3 heures pour 0,99 $? - ET / OU / IN
6. Comment puis-je trouver un film passionnant? - COMME
7. Comment renommer des colonnes et voir des valeurs uniques? - AS / DISTINCT / IS NULL
8. Voyons les exemples de tables de la base de données!
9. Quelle est la longueur totale de tous les films ajoutés? - COUNT / SUM
10. Quelle est la durée moyenne d'un film? - AVG / MIN / MAX
11. Combien de films ont la même note? - GROUPE PAR / AYANT
12. Désignons une valeur basée sur la durée de la location. - CAS
13. Découvrons les genres de films en rejoignant des tableaux! - JOINTURE INTERNE
14. Vérifions la location de films à l’aide de la liste d’inventaire! - GAUCHE / DROITE JOIN
15. Trouvons les clients qui ont loué des films au prix de 9,99 $! - Sous-requête
16. Comment utiliser les fonctions de date dans SQL - DATE_FORMAT, DATEDIFF
17. Comment utiliser les fonctions de chaîne dans SQL - CONCAT, LENGTH, SUBSTR
18. Utilisons quelques fonctions SQL numériques - TRUNCATE, ROUND, MOD