小编典典

将N放在脚本中的字符串前面有不利之处吗?是否被认为是“最佳实践”?

sql

假设我有一个包含varchar字段的表。如果我这样插入:

INSERT MyTable 
 SELECT N'the string goes here'

与以下内容之间有什么根本区别:

INSERT MyTable 
 SELECT 'the string goes here'

我的理解是,只有当字符串包含Unicode字符并且目标列不是unicode时,您才会遇到问题。除此之外,SQL可以很好地处理它,并将带有的字符串N''转换为varchar字段(基本上忽略N)。

我给人的印象是,N在字符串前面是一种很好的做法,但是我找不到关于它的任何讨论,我认为这是确定的。


阅读 155

收藏
2021-04-22

共1个答案

小编典典

简短的答案: 适用于脚本,适用于生产代码。

这不是最佳实践。有一个缺点,因为将2个字节的字符转换为1个字节的字符,所以对性能的影响很小。

如果一个人不知道插入的方向,或者不知道源文本的来源(例如,这是一种通用数据插入实用程序,它为未知目标生成插入语句,例如在导出数据时),N “
foo”可能是更具防御性的编码样式。

因此,不利之处很小,而不利之处是您的脚本代码更适合数据库结构的更改。这可能就是为什么您在批量数据插入脚本中看到它的原因。

但是,如果所讨论的代码是要在您关心代码质量的环境中重用的某种东西,则不应使用,N'the string'因为您将添加不必要的转换。

2021-04-22