2013-05-10 30 views
1

环境是SQL Server 2012的,我要一个CLR过程返回的结果列改变从varcharnvarchar,但我不知道是否能在varchar代码页中找到这些字符总是转换为unicode中的同一个字符,也是另一种方式。不好的例子是,如果有人会从nvarchar的列中得到程序的结果,并将它放在varchar列的数据库中。问题是,他们会一直正确地转换吗?VARCHAR到的NVarChar和背部

回答

2

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

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

+0

是的,这是我想听到的。我以为是我的自我,但想听听意见。问题是可能有使用这个过程的逻辑,但这是因为nvarchar不能正常工作而导致的。该过程用于将csv字符串转换为关系,但是在输入中也可以只有Unicode字符,并且此转换是必需的。那就是那个。 – 2013-05-10 19:19:04

相关问题