Dans SQL Server, vous pouvez utiliser T-SQL SPACE()
fonction pour générer un nombre spécifique d'espaces.
Cela peut être pratique pour ajouter des espaces dans une chaîne, par exemple, lors de la concaténation de deux chaînes ou plus.
La façon dont cela fonctionne est que vous fournissez le nombre d'espaces dont vous avez besoin, et il renverra une chaîne contenant exactement ce nombre d'espaces.
Syntaxe
La syntaxe ressemble à ceci :
SPACE ( integer_expression )
Où expression_entier est un entier positif qui indique le nombre d'espaces. S'il s'agit d'une valeur négative, NULL
est renvoyé.
Exemple 1 - Utilisation de base
Voici un exemple de son fonctionnement :
SELECT SPACE(40) AS Result;
Résultat :
+------------------------------------------+ | Result | |------------------------------------------| | | +------------------------------------------+
Si ce n'est pas clair, cela a donné 40 espaces.
Exemple 2 - Concaténation avec des espaces
Cet exemple pourrait démontrer un peu mieux l'effet.
SELECT 'Keep' + SPACE(10) + 'away!' AS Result;
Résultat :
+---------------------+ | Result | |---------------------| | Keep away! | +---------------------+
Exemple 3 - Valeur entière négative
L'argument doit être une valeur positive. S'il s'agit d'une valeur négative, le résultat est NULL
:
SELECT SPACE(-10) AS Result;
Résultat :
+----------+ | Result | |----------| | NULL | +----------+
Exemple 4 - Un exemple de base de données
Voici un exemple simple d'utilisation de SPACE()
pour insérer un espace entre deux colonnes de base de données lorsqu'elles sont renvoyées d'une base de données :
USE Music; SELECT TOP(7) ArtistName + SPACE(5) + AlbumName AS 'Artist and Album' FROM Artists ar INNER JOIN Albums al ON ar.ArtistId = al.ArtistId INNER JOIN Genres g ON al.GenreId = g.GenreId WHERE g.Genre = 'Rock';
Résultat :
+-------------------------------------------+ | Artist and Album | |-------------------------------------------| | Iron Maiden Powerslave | | AC/DC Powerage | | Devin Townsend Ziltoid the Omniscient | | Devin Townsend Casualties of Cool | | Devin Townsend Epicloud | | Iron Maiden Somewhere in Time | | Iron Maiden Piece of Mind | +-------------------------------------------+
Qu'en est-il de 1 ou 2 espaces ?
C'est une excellente fonction pour ajouter beaucoup d'espaces, mais cela peut également améliorer la lisibilité du code lorsqu'il inclut un petit nombre d'espaces, en particulier si le code contient de nombreuses instances d'ajout d'espaces.
Lors de l'utilisation de SPACE()
vous pouvez voir combien d'espaces en un instant, sans avoir à les compter.
Par exemple, voyez si vous pouvez dire combien d'espaces il y a dans ce qui suit :
SELECT 'Keep' + ' ' + 'away!';
Votre première réaction pourrait être une supposition rapide (par exemple, "2 ou 3"), avant de regarder d'un peu plus près pour vérifier. Pour être sûr à 100 %, vous devrez probablement passer votre curseur sur l'espace pour compter le nombre d'espaces.
Regardez maintenant le code suivant :
SELECT 'Keep' + SPACE(2) + 'away!';
Pas besoin de deviner. Vous pouvez voir 2
écrit directement dans le code.
Cela dit, la valeur peut se trouver dans une variable, de sorte que votre code ressemble davantage à ceci :
SELECT 'Keep' + SPACE(@space_size) + 'away!';
Ce qui, évidemment, ne donne aucune idée du nombre d'espaces qu'il y a (sans avoir à le rechercher). Cependant, si vous connaissez déjà la valeur de @space_size
vous êtes prêt à partir.
Exemple 5 - Taille d'espace variable
Voici un exemple qui illustre le point précédent.
Ici, le nombre d'espaces est défini dans une variable. Dans ce cas, il est facile de voir la valeur de la variable, telle qu'elle est définie dans la ligne précédant immédiatement le SPACE()
fonction (évidemment, ce ne sera pas toujours le cas) :
DECLARE @space_size int SET @space_size = 2 SELECT 'Keep' + SPACE(@space_size) + 'away!' AS Result GO
Résultat :
+-------------+ | Result | |-------------| | Keep away! | +-------------+
Unicode ou plus de 8 000 espaces ?
Microsoft déclare que, pour inclure des espaces dans les données Unicode, ou pour renvoyer plus de 8000 espaces de caractères, vous devez utiliser REPLICATE
au lieu de SPACE
.