Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как работи функцията SPACE() в SQL Server (T-SQL)

В 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 .


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Вземете списък на поддържаните часови зони в SQL Server (T-SQL)

  2. Какъв е еквивалентът на bigint в C#?

  3. 3 начина за конвертиране на десетичен в шестнадесетичен в SQL Server (T-SQL)

  4. Как да намерите местоположението на файловете с данни и регистрационните файлове в SQL Server

  5. Защо SQL Server губи една милисекунда?