Trong SQL Server, bạn có thể sử dụng T-SQL SPACE()
hàm để tạo ra một số không gian cụ thể.
Điều này có thể hữu ích để thêm khoảng trắng trong một chuỗi, chẳng hạn như khi nối hai hoặc nhiều chuỗi.
Cách hoạt động của nó là bạn cung cấp số lượng khoảng trắng bạn cần và nó sẽ trả về một chuỗi có chính xác số khoảng trắng đó.
Cú pháp
Cú pháp như sau:
SPACE ( integer_expression )
Trong đó integer_expression là một số nguyên dương cho biết số lượng khoảng trắng. Nếu đây là giá trị âm, NULL
được trả lại.
Ví dụ 1 - Cách sử dụng cơ bản
Dưới đây là một ví dụ về cách nó hoạt động:
SELECT SPACE(40) AS Result;
Kết quả:
+------------------------------------------+ | Result | |------------------------------------------| | | +------------------------------------------+
Nếu không rõ ràng, điều đó dẫn đến 40 khoảng trắng.
Ví dụ 2 - Nối bằng Dấu cách
Ví dụ này có thể chứng minh hiệu ứng tốt hơn một chút.
SELECT 'Keep' + SPACE(10) + 'away!' AS Result;
Kết quả:
+---------------------+ | Result | |---------------------| | Keep away! | +---------------------+
Ví dụ 3 - Giá trị số nguyên âm
Đối số cần phải là một giá trị dương. Nếu đó là giá trị âm, kết quả là NULL
:
SELECT SPACE(-10) AS Result;
Kết quả:
+----------+ | Result | |----------| | NULL | +----------+
Ví dụ 4 - Ví dụ về Cơ sở dữ liệu
Dưới đây là một ví dụ đơn giản về việc sử dụng SPACE()
để chèn khoảng trắng vào giữa hai cột cơ sở dữ liệu khi được trả về từ cơ sở dữ liệu:
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';
Kết quả:
+-------------------------------------------+ | 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 | +-------------------------------------------+
Còn 1 hoặc 2 Khoảng trắng thì sao?
Đây là một chức năng tuyệt vời để thêm nhiều khoảng trắng, nhưng nó cũng có thể cải thiện khả năng đọc mã khi bao gồm một số lượng nhỏ khoảng trắng - đặc biệt nếu mã chứa nhiều trường hợp thêm khoảng trắng.
Khi sử dụng SPACE()
bạn có thể xem có bao nhiêu khoảng trắng ngay lập tức mà không cần phải đếm chúng.
Ví dụ:hãy xem liệu bạn có thể cho biết có bao nhiêu dấu cách trong phần sau không:
SELECT 'Keep' + ' ' + 'away!';
Phản ứng đầu tiên của bạn có thể là phỏng đoán nhanh (giả sử “2 hoặc 3”), trước khi nhìn kỹ hơn một chút để kiểm tra. Để chắc chắn 100%, bạn có thể phải chạy con trỏ qua khoảng trắng để đếm số khoảng trắng.
Bây giờ hãy xem đoạn mã sau:
SELECT 'Keep' + SPACE(2) + 'away!';
Không cần phải đoán. Bạn có thể thấy 2
được viết ngay vào mã.
Phải nói rằng, giá trị có thể nằm trong một biến, do đó mã của bạn có thể trông giống như sau:
SELECT 'Keep' + SPACE(@space_size) + 'away!';
Rõ ràng là không cung cấp manh mối nào về việc có bao nhiêu khoảng trắng (mà không cần phải tra cứu). Tuy nhiên, nếu bạn đã biết giá trị của @space_size
bạn rất tốt để đi.
Ví dụ 5 - Kích thước không gian thay đổi
Dưới đây là một ví dụ chứng minh quan điểm trước đó.
Ở đây, số lượng khoảng trắng được xác định trong một biến. Trong trường hợp này, thật dễ dàng để thấy giá trị của biến, vì nó được xác định trong dòng ngay trước SPACE()
hàm (rõ ràng là không phải lúc nào cũng vậy):
DECLARE @space_size int SET @space_size = 2 SELECT 'Keep' + SPACE(@space_size) + 'away!' AS Result GO
Kết quả:
+-------------+ | Result | |-------------| | Keep away! | +-------------+
Unicode hay hơn 8000 Spaces?
Microsoft tuyên bố rằng, để bao gồm khoảng trắng trong dữ liệu Unicode hoặc để trả về hơn 8000 khoảng trắng ký tự, bạn nên sử dụng REPLICATE
thay vì SPACE
.