Mục đích của việc đặt 'N' trước các tham số hàm trong TSQL là gì?Mục đích của việc đặt 'N' trước các tham số hàm trong TSQL là gì?
Ví dụ, những gì hiện các N
nghĩa ở phía trước của tham số chức năng trong đoạn mã sau:
object_id(N'dbo.MyTable')
Mục đích của việc đặt 'N' trước các tham số hàm trong TSQL là gì?Mục đích của việc đặt 'N' trước các tham số hàm trong TSQL là gì?
Ví dụ, những gì hiện các N
nghĩa ở phía trước của tham số chức năng trong đoạn mã sau:
object_id(N'dbo.MyTable')
Nó cho thấy một "quốc hữu hóa" chuỗi unicode còn được gọi là hằng số.
http://support.microsoft.com/kb/239530
Khi giao dịch với các hằng chuỗi Unicode trong SQL Server bạn phải đặt trước tất cả các chuỗi với một chữ cái viết hoa N, như được ghi lại trong chủ đề SQL Server Books Online "Sử dụng Unicode dữ liệu" Unicode.
http://msdn.microsoft.com/en-us/library/aa276823%28SQL.80%29.aspx
nchar
vànvarchar
loại vật liệu được hoặc cố định chiều dài (nchar) hoặc chiều dài thay đổi (nvarchar) dữ liệu Unicode và sử dụng bộ ký tự UNICODE UCS-2 . dữ liệu ký tự Unicode
nchar(n)
cố định chiều dài của nhân vật n. n phải là một giá trị từ 1 đến 4.000. Kích thước bộ nhớ là hai lần n byte. Từ đồng nghĩa SQL-92 cho
nchar
là char quốc gia và ký tự quốc gia.
nvarchar(n)
Dữ liệu ký tự Unicode có độ dài thay đổi của n ký tự. n phải là một giá trị từ 1 đến 4.000. Kích thước bộ nhớ, tính theo byte, gấp hai lần số ký tự được nhập. Dữ liệu được nhập có thể dài 0 ký tự. Các từ đồng nghĩa SQL-92 cho
nvarchar
là khác nhau về ký tự quốc gia và ký tự quốc gia khác nhau.
Điều đó thật thú vị. Tôi luôn tự hỏi tại sao 'N' lại là 'Unicode', và tại sao họ không chỉ sử dụng 'U' – JohnFx
@JohnFx: Chỉ cần đoán, nhưng tôi sẽ đặt cược rằng đó là 'U' trong lịch sử có nghĩa là chưa ký. –
Văn bản được quốc hữu hóa nằm trong tiêu chuẩn SQL92 trước khi tồn tại unicode. –