sql >> Base de Datos >  >> RDS >> Sqlserver

Cómo funciona la función SPACE() en SQL Server (T-SQL)

En SQL Server, puede usar T-SQL SPACE() para generar un número específico de espacios.

Esto puede ser útil para agregar espacios dentro de una cadena, por ejemplo, al concatenar dos o más cadenas.

La forma en que funciona es que proporciona la cantidad de espacios que necesita y devolverá una cadena de exactamente esa cantidad de espacios.

Sintaxis

La sintaxis es así:

SPACE ( integer_expression )

Donde expresión_entera es un entero positivo que indica el número de espacios. Si este es un valor negativo, NULL es devuelto.

Ejemplo 1:uso básico

He aquí un ejemplo de cómo funciona:

SELECT SPACE(40) AS Result;

Resultado:

+------------------------------------------+
| Result                                   |
|------------------------------------------|
|                                          |
+------------------------------------------+

Si no está claro, eso resultó en 40 espacios.

Ejemplo 2:Concatenación con espacios

Este ejemplo podría demostrar un poco mejor el efecto.

SELECT 'Keep' + SPACE(10) + 'away!' AS Result;

Resultado:

+---------------------+
| Result              |
|---------------------|
| Keep          away! |
+---------------------+

Ejemplo 3:valor entero negativo

El argumento debe ser un valor positivo. Si es un valor negativo, el resultado es NULL :

SELECT SPACE(-10) AS Result;

Resultado:

+----------+
| Result   |
|----------|
| NULL     |
+----------+

Ejemplo 4:un ejemplo de base de datos

Aquí hay un ejemplo simple del uso de SPACE() para insertar un espacio entre dos columnas de la base de datos cuando se devuelve desde una base de datos:

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

¿Qué pasa con 1 o 2 espacios?

Esta es una gran función para agregar muchos espacios, pero también puede mejorar la legibilidad del código cuando incluye una pequeña cantidad de espacios, especialmente si el código contiene muchas instancias de agregar espacios.

Al usar SPACE() puedes ver cuántos espacios en un instante, sin tener que contarlos.

Por ejemplo, vea si puede decir cuántos espacios hay en lo siguiente:

SELECT 'Keep' + '  ' + 'away!';

Su primera reacción podría ser una suposición rápida (digamos, "2 o 3"), antes de mirar un poco más de cerca para verificar. Para estar 100 % seguro, probablemente tengas que pasar el cursor sobre el espacio para contar el número de espacios.

Ahora mira el siguiente código:

SELECT 'Keep' + SPACE(2) + 'away!';

No hay necesidad de adivinar. Puedes ver 2 escrito directamente en el código.

Habiendo dicho eso, el valor podría estar dentro de una variable, por lo que su código podría parecerse más a esto:

SELECT 'Keep' + SPACE(@space_size) + 'away!';

Lo cual, obviamente, no proporciona ninguna pista sobre cuántos espacios hay (sin tener que buscarlo). Sin embargo, si ya conoce el valor de @space_size estás listo para irte.

Ejemplo 5:tamaño de espacio variable

Aquí hay un ejemplo que demuestra el punto anterior.

Aquí, el número de espacios se define dentro de una variable. En este caso, es fácil ver el valor de la variable, ya que está definida en la línea que precede inmediatamente al SPACE() función (obviamente, esto no siempre va a ser el caso):

DECLARE @space_size int
SET @space_size = 2
SELECT 'Keep' + SPACE(@space_size) + 'away!' AS Result
GO

Resultado:

+-------------+
| Result      |
|-------------|
| Keep  away! |
+-------------+

¿Unicode o más de 8000 espacios?

Microsoft afirma que, para incluir espacios en datos Unicode, o para devolver más de 8000 espacios de caracteres, debe usar REPLICATE en lugar de SPACE .