环境是SQL Server 2012.我即将将clr过程返回的结果列从varchar
更改为nvarchar
,但我不确定是否可以在varchar
中找到字符{1}}代码页将始终转换为unicode中的相同字符,也是另一种方式。糟糕的例子是,如果有人从nvarchar
列的过程中获取结果,并将其放在带有varchar
列的数据库中。问题是,它们会永远正确转换吗?
答案 0 :(得分:2)
VARCHAR特定于您的系统代码页。 NVARCHAR包含Unicode字符。 Unicode始终是任何遗留代码页的超集。因此,您可以预期来自VARCHAR的转化 - > NVARCHAR正确映射。但是,如果您的NVARCHAR字符串稍后包含旧版代码页中找不到的Unicode字符,则转换回VARCHAR时字符将会丢失。
如果可能,您应该避免这种类型的转换。将表列更新为NVARCHAR。