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 là 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 | +----------+