Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.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 在nvarchar文本之前不指定N意味着什么_Sql_Sql Server - Fatal编程技术网

Sql 在nvarchar文本之前不指定N意味着什么

Sql 在nvarchar文本之前不指定N意味着什么,sql,sql-server,Sql,Sql Server,我一直在阅读SQL最佳实践示例,并注意到当使用where子句过滤nvarchar列时,最好在搜索文本之前指定关键字N 例如: 其中column1=N'text' 在上面的示例中,我正在过滤字符串“text”上的column1(nvarchar列) 我想了解不遵循此方法的含义(即-在过滤nvarchar冒号时不指定N关键字)关于使用N如果有任何可用的外语字符,如法语æ,它将被视为æ而不是英语字符“ae”。在将传入文本与现有文本进行数据比较时,这不会产生任何不匹配。我认为这样可以避免分配另一位内存来

我一直在阅读SQL最佳实践示例,并注意到当使用where子句过滤nvarchar列时,最好在搜索文本之前指定关键字N

例如: 其中column1=N'text'

在上面的示例中,我正在过滤字符串“text”上的column1(nvarchar列)


我想了解不遵循此方法的含义(即-在过滤nvarchar冒号时不指定N关键字)

关于使用N如果有任何可用的外语字符,如法语æ,它将被视为æ而不是英语字符“ae”。在将传入文本与现有文本进行数据比较时,这不会产生任何不匹配。

我认为这样可以避免分配另一位内存来将varchar“text”转换为nvarchar。如果有帮助,请检查以下链接:谢谢,我知道N关键字及其用法。那么,使用这个关键字是否会带来更好的性能?还是不同的结果?我只需要理解结果/性能的含义请举一个例子,试试这个:exec sp_executesql'select 1'与exec sp_executesql N'select 1'由@Biswabid链接的问题有一些很好的信息,特别是引用的关于不使用N时转换为默认代码页的部分。我敢打赌没有区别。在比较两种不同的数据类型(在join子句等中)时,“较小”数据类型将转换为“较大”数据类型。换句话说,您的“文本”会自动转换为N“文本”。转换只发生一次,所以没什么大不了的。但是,如果情况正好相反,并且您有一个varchar列和一个nvarchar常量,那么varchar列中的每个条目都需要转换,并且不能使用索引。