W SQL Server możesz użyć T-SQL SPACE()
funkcja do generowania określonej liczby spacji.
Może to być przydatne przy dodawaniu spacji w ciągu, na przykład podczas łączenia dwóch lub więcej ciągów.
Działa to tak, że podajesz liczbę spacji, których potrzebujesz, a zwróci ciąg zawierający dokładnie taką liczbę spacji.
Składnia
Składnia wygląda tak:
SPACE ( integer_expression )
Gdzie integer_expression jest dodatnią liczbą całkowitą, która wskazuje liczbę spacji. Jeśli jest to wartość ujemna, NULL
jest zwracany.
Przykład 1 – Podstawowe użycie
Oto przykład tego, jak to działa:
SELECT SPACE(40) AS Result;
Wynik:
+------------------------------------------+ | Result | |------------------------------------------| | | +------------------------------------------+
Jeśli nie jest jasne, dawało to 40 spacji.
Przykład 2 – Łączenie ze spacjami
Ten przykład może nieco lepiej zademonstrować efekt.
SELECT 'Keep' + SPACE(10) + 'away!' AS Result;
Wynik:
+---------------------+ | Result | |---------------------| | Keep away! | +---------------------+
Przykład 3 – Ujemna wartość całkowita
Argument musi mieć wartość dodatnią. Jeśli jest to wartość ujemna, wynikiem jest NULL
:
SELECT SPACE(-10) AS Result;
Wynik:
+----------+ | Result | |----------| | NULL | +----------+
Przykład 4 – Przykład bazy danych
Oto prosty przykład użycia SPACE()
aby wstawić spację między dwiema kolumnami bazy danych po zwróceniu z bazy danych:
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';
Wynik:
+-------------------------------------------+ | 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 | +-------------------------------------------+
A co z 1 lub 2 spacjami?
Jest to świetna funkcja do dodawania wielu spacji, ale może również poprawić czytelność kodu po uwzględnieniu niewielkiej liczby spacji – zwłaszcza jeśli kod zawiera wiele przypadków dodawania spacji.
Używając SPACE()
możesz zobaczyć, ile spacji w jednej chwili, bez konieczności ich liczenia.
Na przykład sprawdź, czy potrafisz określić, ile spacji znajduje się w następujących miejscach:
SELECT 'Keep' + ' ' + 'away!';
Twoja pierwsza reakcja może być szybkim zgadywaniem (powiedzmy „2 lub 3”), zanim przyjrzysz się trochę bliżej, aby sprawdzić. Aby mieć 100% pewności, prawdopodobnie musiałbyś najechać kursorem na spację, aby policzyć liczbę spacji.
Teraz spójrz na następujący kod:
SELECT 'Keep' + SPACE(2) + 'away!';
Nie musisz zgadywać. Możesz zobaczyć 2
wpisane bezpośrednio do kodu.
Powiedziawszy to, wartość może znajdować się w zmiennej, więc Twój kod może wyglądać mniej więcej tak:
SELECT 'Keep' + SPACE(@space_size) + 'away!';
Co oczywiście nie daje żadnej wskazówki, ile jest miejsc (bez konieczności sprawdzania). Jeśli jednak znasz już wartość @space_size
jesteś gotowy.
Przykład 5 – Zmienna wielkość przestrzeni
Oto przykład, który demonstruje poprzedni punkt.
Tutaj ilość spacji jest zdefiniowana w zmiennej. W tym przypadku łatwo jest zobaczyć wartość zmiennej, ponieważ jest ona zdefiniowana w wierszu bezpośrednio poprzedzającym SPACE()
funkcja (oczywiście nie zawsze tak będzie):
DECLARE @space_size int SET @space_size = 2 SELECT 'Keep' + SPACE(@space_size) + 'away!' AS Result GO
Wynik:
+-------------+ | Result | |-------------| | Keep away! | +-------------+
Unicode czy więcej niż 8000 spacji?
Microsoft stwierdza, że aby uwzględnić spacje w danych Unicode lub zwrócić więcej niż 8000 spacji znaków, należy użyć REPLICATE
zamiast SPACE
.