jco*_*lum 11 sql sql-server unicode
假设我有一个包含varchar字段的表.如果我像这样插入:
INSERT MyTable
SELECT N'the string goes here'
Run Code Online (Sandbox Code Playgroud)
这与之间有什么根本区别:
INSERT MyTable
SELECT 'the string goes here'
Run Code Online (Sandbox Code Playgroud)
我的理解是,如果字符串包含Unicode字符且目标列不是unicode,则只会出现问题.除此之外,SQL处理它很好并将字符串N''转换为varchar字段(基本上忽略了N).
我的印象是N在弦乐前面是一个很好的练习,但我无法找到任何关于它的讨论我认为是确定的.
您应该为字符串添加前缀N为nvarchar(...)列或参数的前缀.如果它们的目的地是varchar(...)列或参数,则省略它,否则最终会进行不必要的转换.
N无论它是什么,它绝对不是一个坚持在每个字符串前面的"最佳实践" .
简短的回答:对于脚本来说很好,对于生产代码来说不好。
这不被认为是最佳实践。它有一个缺点,当 2 字节字符转换为 1 字节字符时,它会对性能产生微小的影响。
如果不知道插入要去哪里,或者不知道源文本来自哪里(假设这是一个通用数据插入实用程序,它为未知目标生成插入语句,例如导出数据时),则 N “foo”可能是更具防御性的编码风格。
因此,缺点很小,优点是您的脚本代码更能适应数据库结构的变化。这可能就是您在批量数据插入脚本中看到它的原因。
但是,如果有问题的代码是为了在您关心代码质量的环境中重用,则不应使用,N'the string'因为您正在添加不必要的转换。
| 归档时间: |
|
| 查看次数: |
3172 次 |
| 最近记录: |