簡體   English   中英

將Varchar轉換為NVarchar?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM