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,它重新創建表。似乎沒有得到錯誤?這是改變數據類型的正確方法嗎? –