Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como a função SPACE() funciona no SQL Server (T-SQL)


No SQL Server, você pode usar o T-SQL SPACE() função para gerar um número específico de espaços.

Isso pode ser útil para adicionar espaços em uma string, por exemplo, ao concatenar duas ou mais strings.

A forma como funciona é que você fornece o número de espaços que você precisa e ele retornará uma string exatamente com esse número de espaços.


Sintaxe


A sintaxe fica assim:
SPACE ( integer_expression )

Onde integer_expression é um inteiro positivo que indica o número de espaços. Se este for um valor negativo, NULL é devolvido.

Exemplo 1 – Uso básico


Veja um exemplo de como funciona:
SELECT SPACE(40) AS Result;

Resultado:
+------------------------------------------+
| Result                                   |
|------------------------------------------|
|                                          |
+------------------------------------------+

Se não estiver claro, isso resultou em 40 espaços.

Exemplo 2 – Concatenação com espaços


Este exemplo pode demonstrar o efeito um pouco melhor.
SELECT 'Keep' + SPACE(10) + 'away!' AS Result;

Resultado:
+---------------------+
| Result              |
|---------------------|
| Keep          away! |
+---------------------+

Exemplo 3 - Valor inteiro negativo


O argumento precisa ser um valor positivo. Se for um valor negativo, o resultado é NULL :
SELECT SPACE(-10) AS Result;

Resultado:
+----------+
| Result   |
|----------|
| NULL     |
+----------+

Exemplo 4 – Um exemplo de banco de dados


Aqui está um exemplo simples de usar SPACE() para inserir espaço entre duas colunas de banco de dados quando retornado de um banco de dados:
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';

Resultado:
+-------------------------------------------+
| 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             |
+-------------------------------------------+

E quanto a 1 ou 2 espaços?


Essa é uma ótima função para adicionar muitos espaços, mas também pode melhorar a legibilidade do código ao incluir um pequeno número de espaços – especialmente se o código contiver muitas instâncias de adição de espaços.

Ao usar SPACE() você pode ver quantos espaços em um instante, sem precisar contá-los.

Por exemplo, veja se você pode dizer quantos espaços estão no seguinte:
SELECT 'Keep' + '  ' + 'away!';

Sua primeira reação pode ser um palpite rápido (digamos, “2 ou 3”), antes de olhar um pouco mais de perto para verificar. Para ter 100% de certeza, você provavelmente teria que passar o cursor sobre o espaço para contar o número de espaços.

Agora observe o seguinte código:
SELECT 'Keep' + SPACE(2) + 'away!';

Não há necessidade de adivinhar. Você pode ver 2 escrito direto no código.

Dito isso, o valor pode estar dentro de uma variável, para que seu código fique mais parecido com isso:
SELECT 'Keep' + SPACE(@space_size) + 'away!';

O que, obviamente, não fornece nenhuma pista sobre quantos espaços existem (sem ter que procurar). No entanto, se você já conhece o valor de @space_size você é bom para ir.

Exemplo 5 - Tamanho de espaço variável


Aqui está um exemplo que demonstra o ponto anterior.

Aqui, o número de espaços é definido dentro de uma variável. Neste caso é fácil ver o valor da variável, pois está definido na linha imediatamente anterior ao SPACE() função (obviamente, isso nem sempre será o caso):
DECLARE @space_size int
SET @space_size = 2
SELECT 'Keep' + SPACE(@space_size) + 'away!' AS Result
GO

Resultado:
+-------------+
| Result      |
|-------------|
| Keep  away! |
+-------------+

Unicode ou mais de 8.000 espaços?


A Microsoft afirma que, para incluir espaços em dados Unicode ou retornar mais de 8.000 espaços de caracteres, você deve usar REPLICATE em vez de SPACE .