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

Fonctionnement de la fonction SPACE() dans SQL Server (T-SQL)

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 )

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 .