N’在SQL脚本中代表什么? (在插入脚本中的字符之前使用的那个)

我生成了这样的sql脚本,

INSERT [dbo].[TableName] ([Sno], [Name], [EmployeeId], [ProjectId], [Experience]) VALUES (1, N'Dave', N'ESD157', N'FD080', 7) 

我想知道N’究竟是什么意思,它的目的是什么呢。

注意 :通过搜索答案我可以得到的是N’是国家语言标准的前缀及其使用unicode数据的前缀。 但老实说,我无法在这里清楚地了解N’的确切操作。 我很感激你的帮助,请以更容易理解的方式来表达。 提前致谢。

N用于指定unicode字符串。

这是一个很好的讨论: 为什么有些SQL字符串有’N’前缀?

在您的示例中,不需要N前缀,因为ASCII字符(值小于128)直接映射到unicode。 但是,如果要插入非ASCII的名称,则需要N前缀。

 INSERT [dbo].[TableName] ([Sno], [Name], [EmployeeId], [ProjectId], [Experience]) VALUES (1, N'Wāhi', 'ESD157', 'FD080', 7) 

"N"前缀代表SQL-92标准中的国家语言,用于表示unicode字符。

无论何时将Unicode数据传递给SQL Server,都必须在Unicode字符串前加上N

当类型来自NVARCHARNCHARNTEXT

有关更多信息,请参阅: 为什么有些SQL字符串有’N’前缀?

'abcd'[var]char字符串的text (或者可能是text ,但varchar(max)现在更常见) – 占用4个字节的内存,并使用SQL服务器配置的任何代码页。 N'abcd'n[var]char字符串的文字(或者可能是ntext ,但最好是nvarchar(max) ),使用UTF-16占用8个字节的内存。 这允许完全国际使用,坦率地说, n[var]char应该是大多数系统中的默认值。

这表示后续字符串是UnicodeN实际上代表国家语言字符集 )。

这意味着您传递的是NCHARNVARCHARNTEXT值,而不是CHARVARCHARTEXT

  • 资源

N是指定它的字符串类型值。

[N] ‘tsql_string’

是一个常量字符串。 tsql_string可以是任何nvarchar或varchar数据类型。 如果包含N,则将字符串解释为nvarchar数据类型。

每个国家/地区都有自己的特定字母和符号,因此为英语美国设置的数据库将无法识别英国英国数据库所使用的英镑符号,西class牙语,法语,德语也是如此。

其他语言如中文,日文,希伯来文,阿拉伯文也不使用任何拉丁字符。

因此,如果您正在使用varchar,那么尝试输入未包含在本地字符集中的任何数据的任何人都将失败或遭受数据损坏,因此如果您的数据库甚至可能需要支持多个本地字符集,那么您必须使用国家化语言字符集aka unicode aka NChar,它允许字符集国籍与字符一起记录。 提供国际文本支持

同样地将N前缀添加到字符串指示数据库包括Nation代码以及字符代码