从 varchar 转换为 nvarchar 是否存在数据丢失

Les*_*nes 2 sql-server encoding varchar nvarchar

我在 SQL Server 中有一个列是varchar(MAX). 该列已填充​​该数据类型。我现在想将列转换为nvarchar(MAX)为接受 unicode 字符。

是否有任何数据丢失,当我从转换此列varchar(MAX)nvachhar(MAX)

Mar*_*ith 5

每个可以表示的字符也可以表示varcharnvarchar

唯一可能的数据丢失问题是如果您有任何 varchar(max)已经大于 1GB 的值。

在大多数排序规则中,nvarchar每个字符使用 2 个字节,并且varchar使用 1 个字节。将大于 1 GB 的字符串的字符串长度加倍显然会超过 2GB 的限制。

即便如此,我还是会期待一条错误消息,而不是静默截断,但在某些设置(例如ANSI_WARNINGS OFF.