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

Is there dataloss from converting from varchar to nvarchar

我在 SQL 服务器中有一列是 varchar(MAX)。该列已使用该数据类型填充。我现在想将该列转换为 nvarchar(MAX) 以接受 unicode 字符。

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

每个可以在 varchar 中表示的字符也可以在 nvarchar 中表示。

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

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

即便如此,我也希望收到错误消息而不是静默截断,但它可能会在某些设置下静默失败,例如 ANSI_WARNINGS OFF.