Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come funziona la funzione SPACE() in SQL Server (T-SQL)

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 .