4

SQL Serverに「Temp」という表があり、Addr1、Addr2、Addr3、Addr4列、およびいくつかの追加の列があります。列のSQL Serverのサイズの差

これらのAddr1、Addr2、Addr3およびAddr4はnvarchar型です。私はこの列のサイズをオブジェクトエクスプローラでチェックします。それらはすべてnvarchar(100)に表示されます。

enter image description here

しかし、私はAltキー+ F1を使用してそれらを確認してください。結果ペインの詳細を長さ200で表示します。スクリーンショットは以下のとおりです。

enter image description here

異なっている理由は? 100文字以上入力すると、切り捨てエラーが発生しますか? 100文字しかかかりません。

長さの値が何を指定しているか教えてください。

ありがとう、 Prakash。

+0

(http://stackoverflow.com/a/21259797/4366471)。 –

+1

@WojciechTomczykですか?その答えは、オブジェクトエクスプローラで表示されるものと 'sp_help'の結果との違いを特に扱っていないようです。ちょうど' NVARCHAR'の値が記憶スペースの2倍を占めると述べています。あなたがリンクしている質問/答えを誤解していない限り。 – 3N1GM4

+0

@ 3N1GM4はい、+1です。私は答えを結びつけるのにあまりにも熱心です... –

答えて

9

オブジェクトエクスプローラにリストされているサイズは、文字の数であるとsp_helpにクエリの結果に記載されているサイズは、バイトの数ですので。

VARCHAR SQLの値は1文字あたり1バイトを使用しますが、NVARCHAR値は1文字につき2バイトを使用します。どちらも、2バイトのオーバーヘッドが必要です。下記を参照してください。したがって、NVARCHAR列を見ているので、100文字を格納するには200バイト(実は202バイト)が必要です。VARCHARには100(実際には102)が必要です。

参照:

MSDN: char and varchar

ストレージサイズは2バイト+入力されたデータの実際の長さです。

MSDN: nchar and nvarchar

記憶サイズは、バイト単位で、データのある二度実際の長さは+ 2バイトに入りました。

(強調鉱山)

MSDN: sp_help

は、データベース・オブジェクト(sys.sysobjects互換ビューにリストされた任意のオブジェクト)、ユーザ定義データ型についての情報をレポートまたはデータ型である。 [すでにここanwered]

 
    /------------------------------------------------------------------------\ 
    | Column name | Data type | Description         | 
    |-------------+-----------+----------------------------------------------| 
    | Length | smallint | Physical length of the data type (in bytes). | 
    \------------------------------------------------------------------------/ 
+0

お知りになりたい! :) –

+0

ありがとうございます。今私はそれを得る.. –

+0

あなたの質問に答えた場合は、@ ps_prakash02 - 私は助けることができるうれしい答えを自由に感じてください! – 3N1GM4

関連する問題