Problème :
Vous avez une colonne de chaînes et vous aimeriez en obtenir des sous-chaînes.
Exemple 1 :
Dans les emails
table, il y a une colonne email. Vous souhaitez afficher les sept premiers caractères de chaque e-mail.
Le tableau ressemble à ceci :
[email protected] |
[email protected] |
[email protected] |
[email protected] |
Solution 1 :
SELECT email, SUBSTRING(email, 1, 7) AS substring FROM emails;
Le résultat est :
sous-chaîne | |
---|---|
[email protected] | jake99@ |
[email protected] | tamarab |
[email protected] | noter@ |
[email protected] | jessica |
Discussion :
Utilisez le SUBSTRING()
une fonction. Le premier argument est la chaîne ou le nom de la colonne. Le deuxième argument est l'index du caractère auquel la sous-chaîne doit commencer. Le troisième argument est la longueur de la sous-chaîne.
Fais attention! Contrairement à certains autres langages de programmation, les index commencent à 1 , pas 0. Cela signifie que le premier caractère a l'index 1, le deuxième caractère a l'index 2, etc.
SUBSTRING(email, 1, 7)
renverra les sous-chaînes des valeurs dans le email
colonne qui commence au premier caractère et va jusqu'à sept caractères.
Exemple 2 :
Vous souhaitez afficher la sous-chaîne entre les index 2 et 6 (inclus).
Solution 2 :
SELECT email, SUBSTRING(email, 2, 5) AS substring FROM emails;
Le résultat est :
sous-chaîne | |
---|---|
[email protected] | ake99 |
[email protected] | amara |
[email protected] | noter |
[email protected] | essic |
Discussion :
Vous utilisez le SUBSTRING()
fonctionnent comme dans les exemples précédents. Cette fois, le deuxième argument de la fonction est 2
, puisque nous voulons commencer à l'index 2. La longueur de la sous-chaîne est de 5 (end_index - start_index + 1
).
Exemple 3 :
Vous souhaitez afficher la sous-chaîne commençant par @
signe et se termine à la fin de la chaîne, mais vous ne connaissez pas les index ou les longueurs exacts.
Solution 3 :
SELECT email, SUBSTRING(email, CHARINDEX('@', email), LEN(email) - CHARINDEX('@', email) + 1) AS substring FROM emails;
Le résultat est :
sous-chaîne | |
---|---|
[email protected] | @gmail.com |
[email protected] | @zoho.com |
[email protected] | @yahoo.fr |
[email protected] | @onet.pl |
Discussion :
Vous utilisez le SUBSTRING()
fonctionnent comme dans les exemples précédents. Cette fois, vous recherchez un personnage spécifique dont la position peut varier d'une ligne à l'autre. Pour trouver l'index du caractère spécifique, vous pouvez utiliser le CHARINDEX(character, column)
fonction où caractère est le caractère spécifique auquel vous souhaitez commencer la sous-chaîne (ici, @
). La colonne d'argument est la colonne à partir de laquelle vous souhaitez récupérer la sous-chaîne ; il peut également s'agir d'une chaîne littérale.
Le troisième argument du SUBSTRING()
fonction est la longueur de la sous-chaîne. Vous pouvez le calculer en utilisant le CHARINDEX()
et le LEN()
les fonctions. Pour ce faire, soustrayez l'index de la longueur de la colonne, puis ajoutez 1 :
LEN(email) - CHARINDEX('@', email) + 1
Vous pouvez également vouloir récupérer une sous-chaîne qui ne se termine pas à la fin de la chaîne mais à un caractère spécifique, par exemple, avant '.
'. Voici comment procéder :
SELECT email, SUBSTRING(email, CHARINDEX('@', email), CHARINDEX('.', email) - CHARINDEX('@', email)) AS substring FROM emails;
Le résultat de cette requête est :
sous-chaîne | |
---|---|
[email protected] | @gmail |
[email protected] | @zoho |
[email protected] | @yahoo |
[email protected] | @onet |
La partie CHARINDEX('.', email) - CHARINDEX('@', email)
calcule simplement la longueur de la sous-chaîne.