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