假设我有一个包含varchar字段的表。如果我这样插入:
INSERT MyTable SELECT N'the string goes here'
与以下内容之间有什么根本区别:
INSERT MyTable SELECT 'the string goes here'
我的理解是,只有当字符串包含Unicode字符并且目标列不是unicode时,您才会遇到问题。除此之外,SQL可以很好地处理它,并将带有的字符串N''转换为varchar字段(基本上忽略N)。
N''
N
我给人的印象是,N在字符串前面是一种很好的做法,但是我找不到关于它的任何讨论,我认为这是确定的。
简短的答案: 适用于脚本,适用于生产代码。
这不是最佳实践。有一个缺点,因为将2个字节的字符转换为1个字节的字符,所以对性能的影响很小。
如果一个人不知道插入的方向,或者不知道源文本的来源(例如,这是一种通用数据插入实用程序,它为未知目标生成插入语句,例如在导出数据时),N “ foo”可能是更具防御性的编码样式。
因此,不利之处很小,而不利之处是您的脚本代码更适合数据库结构的更改。这可能就是为什么您在批量数据插入脚本中看到它的原因。
但是,如果所讨论的代码是要在您关心代码质量的环境中重用的某种东西,则不应使用,N'the string'因为您将添加不必要的转换。
N'the string'