Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cách hàm SPACE () hoạt động trong SQL Server (T-SQL)

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 .


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. làm thế nào để lấy ngày bắt đầu và ngày kết thúc của tất cả các tuần giữa hai ngày trong máy chủ SQL?

  2. Làm cách nào để tải tệp XML vào cơ sở dữ liệu bằng gói SSIS?

  3. Cách trả lại giá trị mã ASCII cho một ký tự nhất định trong SQL Server

  4. Làm cách nào tôi có thể sử dụng một nhóm kết nối mssql duy nhất trên nhiều tuyến đường trong ứng dụng web Express 4?

  5. Ví dụ về sys.dm_sql_referenced_entities () của SQL Server’s sys.dm_sql_referenced_entities () Trả lại một thực thể tham chiếu đến máy chủ được liên kết