Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/machine-learning/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server sqlserver中的Nvarchar_Sql Server - Fatal编程技术网

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