T-SQL语句中前缀N的含义是什么?

我在某些插入T-SQL查询中看到了前缀N. 在将值插入表中之前,许多人已经使用了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。

引用微软的话 :

将Unicode字符串常量前缀为字母N.如果没有N前缀,则将该字符串转换为数据库的默认代码页。 此默认代码页可能无法识别某些字符


如果你想知道这两个数据类型之间的差异,请看这个SO帖子:

varchar和nvarchar有什么区别?

假设值是nvarchar类型,只有我们使用N“

让我告诉你什么N的前缀发生恼人的事情。 我无法修复2天。

我的数据库排序规则SQL_Latin1_General_CP1_CI_AS

有一张桌子。 列MyCol1Nvarchar

但是这个查询无法匹配存在的确切值。

 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不具有大点缀İ这就是为什么它失败,我想。