Sql server sqlserver中的Nvarchar
为什么我们需要添加Sql server sqlserver中的Nvarchar,sql-server,Sql Server,为什么我们需要添加N'பட்டப்பகலில்'用于nvarchar中的unicode字符串 我们正在nvarchar类型的列中插入unicode和非unicode字符串,因为列的类型是nvarchar,为什么我们需要在unicode字符串之前添加N',我们将不知道什么是unicode和非unicode字符串 我们有没有办法在nvarchar字段中插入unicode和非unicode而不在其中提及N。将N放在文本字符串的开头意味着它是一个nvarchar。'abc'和N'abc'之间的区别在于第
N'பட்டப்பகலில்'代码>用于nvarchar中的unicode字符串
我们正在nvarchar类型的列中插入unicode和非unicode字符串,因为列的类型是nvarchar,为什么我们需要在unicode字符串之前添加N'
,我们将不知道什么是unicode和非unicode字符串
我们有没有办法在nvarchar字段中插入unicode和非unicode而不在其中提及N。将N
放在文本字符串的开头意味着它是一个nvarchar
。'abc'
和N'abc'
之间的区别在于第一个文本字符串是varchar(3)
,第二个是nvarchar(3)
为什么它很重要?一个原因是nvarchar
的大小是varchar
的两倍,因此为您拥有的值的大小创建一个好的查询计划是非常重要的。另外,在需要使用MAX
之前,nvarchar
的最大长度只能为4000。varchar
最多可以有8000个 将N
放在文本字符串的开头意味着它是一个nvarchar
。'abc'
和N'abc'
之间的区别在于第一个文本字符串是varchar(3)
,第二个是nvarchar(3)
为什么它很重要?一个原因是nvarchar
的大小是varchar
的两倍,因此为您拥有的值的大小创建一个好的查询计划是非常重要的。另外,在需要使用MAX
之前,nvarchar
的最大长度只能为4000。varchar
最多可以有8000个
既然列的类型是nvarchar
为什么我们需要添加N'
在将该值分配给列或变量时,该值已作为字符串文字处理。1
因此,考虑列或变量的类型来决定如何处理它已经太迟了。事实上,它可能根本不会被指定给列或变量——它可能是更大表达式的一部分
这就是为什么必须分别指出每个文本的类型。但正如其他人所评论的,仅仅将所有文本标记为unicode并不会带来很大的损失(除非您使用的是大量约6000个字符的文本)
1这与许多其他语言相同,在这些语言中,必须确定表达式的类型,而不考虑是否将其分配给特定变量,因此,此类变量的类型在确定表达式的类型时不起作用
既然列的类型是nvarchar
为什么我们需要添加N'
在将该值分配给列或变量时,该值已作为字符串文字处理。1
因此,考虑列或变量的类型来决定如何处理它已经太迟了。事实上,它可能根本不会被指定给列或变量——它可能是更大表达式的一部分
这就是为什么必须分别指出每个文本的类型。但正如其他人所评论的,仅仅将所有文本标记为unicode并不会带来很大的损失(除非您使用的是大量约6000个字符的文本)
1这与许多其他语言相同,在这些语言中,必须确定表达式的类型,而不考虑是否将其分配给特定变量,因此此类变量的类型在确定表达式的类型时不起作用。如果列的类型为nvarchar,然后所有内容都存储为unicode。即使使用不需要unicode来存储的字符,它们仍然存储为unicode。所以不能插入“非unicode”字符串
如果不使用任何特殊字符,可以省略N
。但是SQL Server在存储它之前只会将其转换为unicode。如果列的类型为nvarchar,则所有内容都存储为unicode。即使使用不需要unicode来存储的字符,它们仍然存储为unicode。所以不能插入“非unicode”字符串
如果不使用任何特殊字符,可以省略N
。但是SQL Server会在存储之前将其转换为unicode。简而言之:不。我也不知道问题是什么:只需在所有字符串前面加上N
,就可以了;如果是VARCHAR
,则仅转换该值。通过将文本编写为非Unicode,您并没有获得某种出色的性能提升。在客户端应用程序中,这无论如何都不是问题,因为您应该使用适当类型的参数,而不是文字(因此您不必担心前缀)。您为什么认为必须使用N'
?如果没有,是否会出现错误?否。如果省略N,则为varchar数据。N是表示它是unicode数据所需的语法。简言之:否。我也不知道问题是什么:只需在所有字符串前面加上N
,就可以了;如果是VARCHAR
,则仅转换该值。通过将文本编写为非Unicode,您并没有获得某种出色的性能提升。在客户端应用程序中,这无论如何都不是问题,因为您应该使用适当类型的参数,而不是文字(因此您不必担心前缀)。您为什么认为必须使用N'
?如果没有,是否会出现错误?否。如果省略N,则为varchar数据。N是表示它是unicode数据所需的语法。老实说,是时候让“N”字面值成为默认值了,并且有一个新的字面值语法前缀,您可以使用它在极少数情况下强制使用窄/ascii字面值,因为它会导致pe