14

から に変換すると、一部のデータが失われたり変更されたりすることがわかってnvarcharvarcharます。

varcharただし、データ型をに変換するときにデータが変更されるリスクはありますnvarcharか?

4

3 に答える 3

9

nvarchar は、varchar 文字の 2 倍のサイズの Unicode 文字を格納します。したがって、nvarchar が vchar の長さの少なくとも 2 倍の長さである限り、これは問題になりません。

ASCII 文字の範囲外の文字を使用していない (つまり、Unicode 文字を使用していない) 場合は、他の方法で変換することもできます。

つまり、nvarchar の長さが最大の varchar 値の 2 倍のサイズであることを確認してから、変更を加えます。


これについていくつかの反対票を受け取ったようです (説明なし) ので、上記の長さを参照するときは、必要なストレージ データの量などのサイズを意味することを明確にしたいと思います。以下の私のコメントに注意してください。これもここに含めます。

SQL で長さを変更する場合は、同じ長さで問題ないと思います。これは、実際に保存されるデータ量ではなく、文字数に基づいて長さを指定するためです。

于 2011-10-20T14:59:55.053 に答える
3

ほとんどの場合、2 つのデータ型は、SQL Server 内またはアプリケーションからどのように操作するかという点で同じです。違いは、データベース テーブルに多言語データを格納するために使用される Unicode データを格納するために nvarchar が使用されることです。他の言語には、保存する必要がある文字コードの拡張セットがあり、このデータ型はこの拡張を可能にします。データベースに多言語データを格納しない場合は、代わりに varchar データ型を使用する必要があります。これは、nvarchar が varchar の 2 倍のスペースを必要とするためです。これは、他の言語の拡張文字コードを格納する必要があるためです。

(から: http://weblogs.asp.net/guys/archive/2005/01/15/353550.aspx )

したがって、nvarchar は varchar のスーパーセットであるため、変換時にデータを失うことはありません。

于 2011-10-20T15:04:45.430 に答える
1

この記事からhttp://searchsqlserver.techtarget.com/tip/Differences-between-varchar-and-nvarchar-in-SQL-Server

VARCHAR は通常の 8 ビット データとして格納されます。ただし、NVARCHAR 文字列は常に UTF-16 (文字あたり 16 ビットまたは 2 バイト) としてデータベースに格納され、出力時にデータベース接続で使用されているコードページ (通常は UTF-8) に変換されます。とはいえ、NVARCHAR 文字列には VARCHAR 文字列と同じ長さ制限 (8,000 バイト) があります。ただし、NVARCHAR は各文字に 2 バイトを使用するため、特定の NVARCHAR は最大 4,000 文字 (バイトではない) しか保持できないことを意味します。

于 2011-10-20T15:05:08.377 に答える