1

环境是 SQL Server 2012。我即将将 clr 过程返回的结果列从 更改varcharnvarchar,但我不确定在varchar代码页中可以找到的字符是否总是会转换为 unicode 中的相同字符以及另一种方式。不好的例子是,如果有人从带有列的过程中获取结果nvarchar并将其放入带有varchar列的数据库中。问题是,他们会一直正确转换吗?

4

1 回答 1

2

VARCHAR 特定于您的系统代码页。NVARCHAR 保存 Unicode 字符。Unicode 总是会成为任何遗留代码页的超集。因此,您可以期望从 VARCHAR -> NVARCHAR 的转换正确映射。但是,如果您的 NVARCHAR 字符串稍后包含在您的旧代码页中找不到的 Unicode 字符,则在转换回 VARCHAR 时这些字符将丢失。

如果可能,您应该避免这种类型的转换。将表列更新为 NVARCHAR。

于 2013-05-10T13:55:16.500 回答