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

Cách hoạt động của hàm QUOTENAME () trong SQL Server (T-SQL)

Trong SQL Server, T-SQL QUOTENAME() hàm trả về một chuỗi Unicode với các dấu phân cách được thêm vào để làm cho chuỗi đầu vào trở thành một số nhận dạng hợp lệ được phân tách trên SQL Server.

Nó được thiết kế để trích dẫn cơ sở dữ liệu và các đối tượng của chúng.

Hàm chấp nhận hai đối số; chuỗi đầu vào (bắt buộc) và một ký tự phân tách (tùy chọn).

Cú pháp

Cú pháp như sau:

QUOTENAME ( 'character_string' [ , 'quote_character' ] )

Trong đó character_string là chuỗi đầu vào và quote_character là một đối số tùy chọn để chỉ định một ký tự được sử dụng làm dấu phân cách. Nếu bị bỏ qua, dấu ngoặc vuông được sử dụng làm dấu phân cách.

Lưu ý rằng character_string sysname và được giới hạn trong 128 ký tự. Đầu vào lớn hơn 128 ký tự trả về NULL .

Dấu phân cách hợp lệ (cho quote_character tùy chọn đối số) là:

  • ` (dấu nền)
  • ' (dấu ngoặc kép)
  • " (dấu ngoặc kép)
  • [] (ngoặc trái hoặc phải)
  • () (dấu ngoặc kép trái hoặc phải)
  • <> (nhỏ hơn hoặc lớn hơn dấu)
  • {} (dấu ngoặc nhọn trái hoặc phả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 QUOTENAME('cat[]dog') AS Result;

Kết quả:

+-------------+
| Result      |
|-------------|
| [cat[]]dog] |
+-------------+

Ví dụ 2 - Dấu phân cách tùy chỉnh

Dưới đây là một ví dụ về việc chỉ định một dấu phân tách khác:

SELECT QUOTENAME('cat[]dog', '}') AS Result;

Kết quả:

+------------+
| Result     |
|------------|
| {cat[]dog} |
+------------+

Và đây là điều sẽ xảy ra nếu chúng ta thay đổi dấu ngoặc ở giữa thành dấu ngoặc nhọn:

SELECT QUOTENAME('cat{}dog', '}') AS Result;

Kết quả:

+-------------+
| Result      |
|-------------|
| {cat{}}dog} |
+-------------+

Ví dụ 3 - Chuỗi nhập không hợp lệ

Như đã đề cập, chuỗi đầu vào là sysname và do đó nó bị giới hạn ở 128 ký tự. sysname là kiểu dữ liệu do người dùng xác định do hệ thống cung cấp có chức năng tương đương với nvarchar (128) , ngoại trừ việc nó không thể nullable. sysname được sử dụng để tham chiếu tên đối tượng cơ sở dữ liệu.

Đây là những gì sẽ xảy ra nếu chuỗi đầu vào quá dài:

SELECT QUOTENAME('This text is too long to be an input string for this function, because it contains more than 128 characters - too long for sysname.') AS Result;

Kết quả:

+----------+
| Result   |
|----------|
| NULL     |
+----------+

Ví dụ 4 - Dấu phân cách không hợp lệ

Đây là những gì sẽ xảy ra nếu bạn chỉ định một dấu phân tách không hợp lệ:

SELECT QUOTENAME('cat[]dog', '!') AS Result;

Kết quả:

+----------+
| Result   |
|----------|
| NULL     |
+----------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Đã xảy ra lỗi liên quan đến mạng hoặc lỗi cụ thể đối với trường hợp cụ thể khi thiết lập kết nối với SQL Server

  2. Cài đặt phiên bản cụm chuyển đổi dự phòng SQL Server - Phần 1

  3. Cách thực thi truy vấn SQL mà không hiển thị kết quả

  4. Viết một số có hai chữ số thập phân SQL Server

  5. Lược đồ máy chủ SQL và lược đồ mặc định