我在某些插入T-SQL查詢中看到了前綴N.在將值插入表格之前,許多人已使用N
。T-SQL語句中前綴N的含義是什麼?
我搜索了,但我無法理解在將任何字符串插入表之前,包含N
的目的是什麼。
INSERT INTO Personnel.Employees
VALUES(N'29730', N'Philippe', N'Horsford', 20.05, 1),
我在某些插入T-SQL查詢中看到了前綴N.在將值插入表格之前,許多人已使用N
。T-SQL語句中前綴N的含義是什麼?
我搜索了,但我無法理解在將任何字符串插入表之前,包含N
的目的是什麼。
INSERT INTO Personnel.Employees
VALUES(N'29730', N'Philippe', N'Horsford', 20.05, 1),
聲明它的字符串作爲nvarchar
數據類型,而不是varchar
你可能已經看到,繞過使用 一個N前綴字符串的Transact-SQL代碼。這表示後續字符串採用Unicode (N實際上代表國家語言字符集)。其中 表示您傳遞的是NCHAR,NVARCHAR或NTEXT值,因爲 與CHAR,VARCHAR或TEXT相對。
前綴統一用字母N的字符串常量沒有 N個前綴,該字符串轉換爲 數據庫的默認代碼頁。 此默認代碼頁可能無法識別某些字符。
如果你想知道這兩個數據類型之間的差異,請參閱本SO帖子:
假設值是nvarchar的類型,只有我們使用N」 '
讓我告訴你什麼N件事的前綴發生惱人的事情。我無法修復2天。我的db歸類爲SQL_Latin1_General_CP1_CI_AS。
有一張桌子。列MyCol1是nvarchar的
但此查詢未能精確匹配價值存在。
SELECT TOP 1 * FROM myTable1 WHERE MyCol1 = 'ESKİ'
// 0 result
使用前綴N '' 修復它
SELECT TOP 1 * FROM myTable1 WHERE MyCol1 = N'ESKİ'
// 1 result - found!!!!
爲什麼呢?因爲latin1_general沒有big dotted©這就是爲什麼它失敗我想。
@Curt這意味着我shuld只有當我使用以下數據類型'CHAR,VARCHAR或TEXT'時才使用'N'?因爲'NCHAR,NVARCHAR或NTEXT'本質上是存儲UNICODE,我不需要單獨添加它....這是真的嗎? – Pritesh 2012-08-04 11:23:00
@Pritesh - 僅當您使用的默認代碼頁可能無法識別上面的粗體文本中的unicode字符時。 – Todd 2015-09-01 12:32:29
@Curt連接到'databases aspfaq com'重定向到非常可疑的網站('fkref com','za1 zeroredirect1 com','i0z13 trackvoluum com'),它們被我們公司的防火牆標記爲色情,惡意網站和垃圾郵件網址。我已聯繫了aspfaq.com所有者並編輯了刪除鏈接的答案。 – jaume 2015-11-26 08:17:59