char varchar nchar nvarcharの4つの違いは何ですか(なぜSQL Serverは文字列の末尾にスペースを自動的に追加しますか)

2335 ワード

低炭素の原則に基づいていくつかの変数をncharと宣言した結果、尻尾には毎回大きなスペースが多く、C#ではTrimが何度も苦労して間違いやすいことが分かった.インターネットを利用してもとの4種類の文字列が似ているように見えるのは実は多くのことにこだわって、その中で本帖で最も全面的で、特にここで転送します.
原帖:http://zhidao.baidu.com/question/59109925.html
 
原帖が长くてレイアウトがばらばらなので(中から外まで「Trim」に借りがある)、次の整理を见てみましょう.
  :

   1、varchar:      Unicode     ,   8,000   。   

   2、nvarchar:    Unicode   ,      4,000  。   

   3、char:      Unicode    ,      8,000    。 

   4、nchar:      Unicode   ,      4,000    。 

   5、char varchar        , Unicode      ,         

nchar(n)
n文字を含む固定長Unicode文字データ.nの値は1〜4000でなければならない.ストレージサイズはnバイトの2倍です.
SQL-92におけるncharの同義語はnational charとnational characterである.
nvarchar(n)
n文字を含む可変長Unicode文字データ.
nの値は1〜4000でなければならない.バイトのストレージサイズは、入力した文字数の2倍です.入力されたデータ文字の長さはゼロでもよい.
nvarcharのSQL-92の同義語はnational char varyingとnational character varyingである.
注記データ定義文または変数宣言文にnが指定されていない場合、デフォルトの長さは1です.CAST関数を使用してnを指定しない場合、デフォルトの長さは30です.
nchar(n)とnvarchar(n)の使用方法
カラム内のすべてのデータ・アイテムのサイズが一致に近い場合はncharを使用します.カラム内のデータ・アイテムのサイズの違いが大きい場合は、nvarcharを使用します.
ncharまたはnvarcharを使用するオブジェクトには、COLLATE句を使用して特定のソート・ルールを付与しない限り、データベースのデフォルトのソート・ルールが付与されます.
SET ANSI_PADDING OFFはncharまたはnvarcharには適用されません.SET ANSI_PADDING ONは常にncharとnvarcharに適しています.二、charおよびvarchar固定長(char)または可変長(varchar)文字データ型.
char[(n)]
長さnバイトの固定長でUnicode以外の文字データ.nは1と8000の間の数値でなければならない.ストレージサイズはnバイトです.
SQL-92におけるcharの同義語はcharacterである.
varchar[(n)]
長さnバイトの可変長でUnicode以外の文字データ.nは1と8000の間の数値でなければならない.ストレージサイズは、nバイトではなく入力データのバイトの実際の長さです.
入力されたデータ文字の長さはゼロでもよい.SQL-92におけるvarcharの同義語はchar varyingまたはcharacter varyingである.
注記データ定義文または変数宣言文にnが指定されていない場合、デフォルトの長さは1です.CAST関数を使用してnを指定しない場合、デフォルトの長さは30です.
COLLATE句で特定のソート・ルールが追加されない限り、charまたはvarcharを使用するオブジェクトにデータベースのデフォルトのソート・ルールが割り当てられます.このソート・ルールは、文字データを格納するコード・ページを制御します.
多言語対応サイトでは、Unicode ncharまたはnvarcharデータ型を使用して文字変換の問題を最小限に抑えることを考慮する必要があります.
charまたはvarcharの使用方法
カラムのデータ値のサイズが一致に近い場合はcharを使用します.カラムのデータ値のサイズが著しく異なる場合はvarcharを使用します.CREATE TABLEまたはALTER TABLEを実行する場合SET ANSI_PADDINGがOFFの場合、NULLと定義されたchar列がvarcharとして処理されます.
ソート・ルール・コード・ページで2バイト文字が使用される場合、ストレージ・サイズはnバイトのままです.文字列によっては、nバイトのストレージサイズがn文字未満の場合があります.
 
これらを理解すると、SQLサーバがcharまたはncharとして宣言されたため、文字列の末尾に自動的にスペースを追加する理由が理解されます.
注意varタイプに変更しても元のスペースは自動的に消えず、手動で削除する必要があります.