[英]Converting Varchar to NVarchar?
我知道從nvarchar
轉換為varchar
,某些數據將丟失/更改。
但是,將varchar
數據類型轉換為nvarchar
時是否存在數據更改的風險?
nvarchar存儲的unicode字符是varchar字符大小的兩倍。 因此,只要您的nvarchar至少是vchar長度的兩倍,這就不會有問題了。
如果您沒有使用ASCII字符范圍之外的任何字符(即您沒有Unicode字符),仍然可以實現轉換其他方式
簡而言之,確保您的nvarchar長度是最大varchar值的兩倍,然后進行更改。
由於我似乎已經收到了一些關於此的暗示(沒有解釋),我想明確指出,當我提到長度時,我指的是大小,例如所需的存儲數據量。 請注意我在下面的評論,我還將在此處添加:
如果您正在談論使用SQL更改長度,那么我認為您應該可以使用相同的長度。 這是因為當您根據字符數而不是實際存儲的數據量指定長度時
在大多數情況下,兩種數據類型在SQL Server或應用程序中使用它們的方式完全相同。 區別在於nvarchar用於存儲unicode數據,用於在數據庫表中存儲多語言數據。 其他語言有一組需要保存的擴展字符代碼,此數據類型允許此擴展。 如果您的數據庫不存儲多語言數據,則應使用varchar數據類型。 原因是nvarchar占用的空間是varchar的兩倍,這是因為需要為其他語言存儲擴展字符代碼。
(來自: http : //weblogs.asp.net/guys/archive/2005/01/15/353550.aspx )
因此nvarchar是varchar的超集,因此轉換時不應丟失數據。
從這篇文章http://searchsqlserver.techtarget.com/tip/Differences-between-varchar-and-nvarchar-in-SQL-Server
VARCHAR存儲為常規8位數據。 但是NVARCHAR字符串作為UTF-16存儲在數據庫中 - 每個字符16位或兩個字節,始終 - 並轉換為輸出上數據庫連接使用的任何代碼頁(通常為UTF-8)。 也就是說,NVARCHAR字符串與VARCHAR表兄弟具有相同的長度限制--8,000字節。 但是,由於NVARCHAR為每個字符使用兩個字節,這意味着給定的NVARCHAR最多只能容納4,000個字符(而不是字節)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.