В SQL Server можете да използвате T-SQL SPACE()
функция за генериране на определен брой интервали.
Това може да е удобно за добавяне на интервали в рамките на низ, например при свързване на два или повече низа.
Начинът, по който работи, е, че предоставяте необходимия брой интервали и той ще върне низ от точно този брой интервали.
Синтаксис
Синтаксисът е така:
SPACE ( integer_expression )
Където израз на цяло число е положително цяло число, което показва броя на интервалите. Ако това е отрицателна стойност, NULL
се връща.
Пример 1 – Основна употреба
Ето пример за това как работи:
SELECT SPACE(40) AS Result;
Резултат:
+------------------------------------------+ | Result | |------------------------------------------| | | +------------------------------------------+
Ако не е ясно, това доведе до 40 интервала.
Пример 2 – Конкатенация с интервали
Този пример може да демонстрира ефекта малко по-добре.
SELECT 'Keep' + SPACE(10) + 'away!' AS Result;
Резултат:
+---------------------+ | Result | |---------------------| | Keep away! | +---------------------+
Пример 3 – Отрицателна целочислена стойност
Аргументът трябва да има положителна стойност. Ако е отрицателна стойност, резултатът е NULL
:
SELECT SPACE(-10) AS Result;
Резултат:
+----------+ | Result | |----------| | NULL | +----------+
Пример 4 – Пример за база данни
Ето един прост пример за използване на SPACE()
за вмъкване на пространство между две колони на базата данни, когато се връща от база данни:
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';
Резултат:
+-------------------------------------------+ | 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 | +-------------------------------------------+
Какво ще кажете за 1 или 2 интервала?
Това е чудесна функция за добавяне на много интервали, но също така може да подобри четимостта на кода, когато включва малък брой интервали – особено ако кодът съдържа много случаи на добавяне на интервали.
Когато използвате SPACE()
можете да видите колко интервала за миг, без да се налага да ги броите.
Например, вижте дали можете да кажете колко интервали има в следното:
SELECT 'Keep' + ' ' + 'away!';
Първата ви реакция може да бъде бързо предположение (да речем „2 или 3“), преди да погледнете малко по-близо, за да проверите. За да сте 100% сигурни, вероятно ще трябва да прекарате курсора си върху интервала, за да преброите броя на интервалите.
Сега погледнете следния код:
SELECT 'Keep' + SPACE(2) + 'away!';
Няма нужда да гадаете. Можете да видите 2
написано направо в кода.
Като каза това, стойността може да бъде в рамките на променлива, така че кодът ви може да изглежда по-скоро така:
SELECT 'Keep' + SPACE(@space_size) + 'away!';
Което очевидно не дава представа колко места има (без да се налага да го търсим). Въпреки това, ако вече знаете стойността на @space_size
готово е.
Пример 5 – Променлив размер на пространството
Ето пример, който демонстрира предишната точка.
Тук броят на интервалите е дефиниран в рамките на променлива. В този случай е лесно да видите стойността на променливата, тъй като тя е дефинирана в реда, непосредствено предхождащ SPACE()
функция (очевидно, това не винаги ще е така):
DECLARE @space_size int SET @space_size = 2 SELECT 'Keep' + SPACE(@space_size) + 'away!' AS Result GO
Резултат:
+-------------+ | Result | |-------------| | Keep away! | +-------------+
Unicode или повече от 8000 интервала?
Microsoft заявява, че за да включите интервали в данните на Unicode или да върнете повече от 8000 символни интервали, трябва да използвате REPLICATE
вместо SPACE
.