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
.