In SQL Server puoi utilizzare T-SQL SPACE()
funzione per generare un numero specifico di spazi.
Questo può essere utile per aggiungere spazi all'interno di una stringa, ad esempio, quando si concatenano due o più stringhe.
Il modo in cui funziona è che fornisci il numero di spazi di cui hai bisogno e restituirà una stringa esattamente di quel numero di spazi.
Sintassi
La sintassi è questa:
SPACE ( integer_expression )
Dove espressione_intera è un numero intero positivo che indica il numero di spazi. Se questo è un valore negativo, NULL
viene restituito.
Esempio 1 – Utilizzo di base
Ecco un esempio di come funziona:
SELECT SPACE(40) AS Result;
Risultato:
+------------------------------------------+ | Result | |------------------------------------------| | | +------------------------------------------+
Se non è chiaro, si ottengono 40 spazi.
Esempio 2 – Concatenazione con spazi
Questo esempio potrebbe dimostrare un po' meglio l'effetto.
SELECT 'Keep' + SPACE(10) + 'away!' AS Result;
Risultato:
+---------------------+ | Result | |---------------------| | Keep away! | +---------------------+
Esempio 3 – Valore intero negativo
L'argomento deve essere un valore positivo. Se è un valore negativo, il risultato è NULL
:
SELECT SPACE(-10) AS Result;
Risultato:
+----------+ | Result | |----------| | NULL | +----------+
Esempio 4:un esempio di database
Ecco un semplice esempio di utilizzo di SPACE()
per inserire spazio tra due colonne del database quando viene restituito da un database:
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';
Risultato:
+-------------------------------------------+ | 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 | +-------------------------------------------+
Che ne dici di 1 o 2 spazi?
Questa è un'ottima funzione per aggiungere molti spazi, ma può anche migliorare la leggibilità del codice quando si include un numero ridotto di spazi, specialmente se il codice contiene molte istanze di aggiunta di spazi.
Quando si utilizza SPACE()
puoi vedere quanti spazi in un istante, senza doverli contare.
Ad esempio, vedi se riesci a dire quanti spazi ci sono nel seguente:
SELECT 'Keep' + ' ' + 'away!';
La tua prima reazione potrebbe essere una rapida ipotesi (ad esempio "2 o 3"), prima di guardare un po' più da vicino per controllare. Per essere sicuro al 100%, probabilmente dovresti passare il cursore sullo spazio per contare il numero di spazi.
Ora guarda il seguente codice:
SELECT 'Keep' + SPACE(2) + 'away!';
Non c'è bisogno di indovinare. Puoi vedere 2
scritto direttamente nel codice.
Detto questo, il valore potrebbe essere all'interno di una variabile, in modo che il tuo codice possa assomigliare di più a questo:
SELECT 'Keep' + SPACE(@space_size) + 'away!';
Il che ovviamente non fornisce alcun indizio su quanti spazi ci sono (senza doverlo cercare). Tuttavia, se conosci già il valore di @space_size
sei a posto.
Esempio 5 – Dimensione spazio variabile
Ecco un esempio che dimostra il punto precedente.
Qui, il numero di spazi è definito all'interno di una variabile. In questo caso è facile vedere il valore della variabile, in quanto è definito nella riga immediatamente precedente a SPACE()
funzione (ovviamente, non sarà sempre così):
DECLARE @space_size int SET @space_size = 2 SELECT 'Keep' + SPACE(@space_size) + 'away!' AS Result GO
Risultato:
+-------------+ | Result | |-------------| | Keep away! | +-------------+
Unicode o più di 8000 spazi?
Microsoft afferma che, per includere spazi nei dati Unicode o per restituire più di 8000 spazi di caratteri, è necessario utilizzare REPLICATE
invece di SPACE
.