1
我在SQL Server中有一列是varchar(MAX)
。该列已填充该数据类型。我现在要将列转换为nvarchar(MAX)
以接受unicode字符。是否有从varchar转换为nvarchar的dataloss
当我将此列从varchar(MAX)
转换为nvachhar(MAX)
时,是否有任何数据丢失?
我在SQL Server中有一列是varchar(MAX)
。该列已填充该数据类型。我现在要将列转换为nvarchar(MAX)
以接受unicode字符。是否有从varchar转换为nvarchar的dataloss
当我将此列从varchar(MAX)
转换为nvachhar(MAX)
时,是否有任何数据丢失?
可在varchar
中表示的每个字符也可在nvarchar
中表示。
唯一可能的数据丢失问题是如果您有任何varchar(max)
值已经大于1GB。
在大多数排序规则中nvarchar
每个字符使用2个字节,而varchar
每个字符使用1个字节。将串> 1 GB的字符串长度加倍会明显超过2GB的限制。
即使这样我会期待一个错误消息而不是无声截断,但可能在某些设置(如ANSI_WARNINGS OFF
)下可能会默默失败。
所以只是为了澄清你的说法唯一可能的错误是如果表中的字符串值大于1GB的大小? –
是的。您可能会遇到其他错误,例如磁盘空间不足,但这不会导致数据丢失。它会被回滚。 –
我看到,我最担心的截断问题,在sql服务器我去设计视图更改数据类型从varchar为nvarchar,它重新创建表。似乎没有得到错误?这是改变数据类型的正确方法吗? –