多くの開発者とデータベース設計は、多くの場合、CHAR、VARCHARタイプを考えるために多くを持っていない場合は、いくつかのも、メモリの価格が安くなるので、注意を払う、とデザイン理論の基本原則とこれの初めのいくつかを忘れていません私は1元を離れて彼の手から滑って手を振った、今日の若い人たちの考えになり、実際には、私は細部の把握は、多くのことを決定します、開発を行うには男イェジンハオ、イェジンハオあるかと思います。もちろん、一部の人々も、その違いを見つけることができませんでしいずれかを選択しますがあります。私はあなたのアドバイスを願って何か問題がある場合、それらは、もちろん、簡単な分析を行うためにはここを私はしたいと思います。
1、CHAR。CHAR固定長データ記憶CHARフィールドレベルで便利で、高効率の指標、そのような定義CHAR(10)として、その後に関係なく、データ・ストレージの10バイトに達し、それは不十分な、空間の10バイトを占有しなければなりませんそう読み取るとき、空間を充填自動()は、トリム回以上使用することができます。
2、 VARCHAR。CHAR高いストレージ効率を可変長のデータを格納し、なく。フィールドの値が固定長ではないかもしれない場合は、我々は唯一のそれは10以上の文字にすることができないことを知って、それはVARCHAR(10)のように定義されたベストバイです。VARCHAR型の実際の長さは、その実際の長さの値+1です。なぜ「+1」を意味しますか?これは、どのくらいの実際の長さを格納するために使用されるバイトです。空間上の考慮事項は、適切な使用VARCHARから、効率の観点から、適切なチャーと、キーはトレードオフは、実際の状況で見つけることです。
3、TEXT。非可変長に格納されたUnicodeテキストデータ、2 ^ 31-1(2,147,483,647)文字の最大長。
4、 NCHAR、NVARCHAR、NTEXT。以前よりも「N」以上のこれら三つの三種類の名前から判断します。これは、データストレージのタイプは、Unicode文字で表します。私たちは、英語の文字は1つのバイトのみメモリが十分である必要がある、文字を知っているが、多くの中国の文字、2バイトの記憶領域を必要とし、英語と中国語の文字が存在する場合に混乱を引き起こす可能性があり、Unicode文字は文字セットがこの非互換性を解決することを目的とする設定しました英語の文字が2バイトで表現される。すなわち、そのすべての文字と、発生する問題は、2バイトです。長NCHAR、NVARCHARは1と4000の間です。CHAR、VARCHARは8000英語、4,000漢字まで保存することができ;そしてCHAR、VARCHAR比較、nchar型、nvarchar型は、英語または中国語の文字かどうか、4000文字まで格納します。文字入力は英語または中国語の文字、より便利に、しかしとき英語の記憶喪失額の一部をあるときにnvarcharデータ型は心配しないで、NCHARを使用して見ることができます。
だから、一般的には、それはNCHAR / NVARCHARで、中国語の文字が含まれている場合、平易な英語とデジタルの場合、CHAR / Var-チャーと R
Iは、その違いがまとめ入れ:
CHAR、NCHAR固定長、スピード、大きなスペースを占め、対処する必要性
VARCHARは、 、NVARCHAR、TEXT可変長、小さな空間が、スローに対処することなく
NCHAR、NVARCHAR、NTEXTは、Unicodeコードを扱います
第二:
これまで知られている唯一のテキストや画像は、SQL Serverのデータ型のうち、可能性が高いですが、正確な原因は明らかではない、今日の読書は、私はテキストとvarchar(MAX)とNVARCHAR(MAX)との差、事業者の主な制限に気づきました、テキストだけで、次のような効果の関数とすることができます。
機能 | 声明 |
---|---|
DATALENGTH |
READTEXT |
PATINDEX |
SET TEXTSIZE |
SUBSTRING |
UPDATETEXT |
TEXTPTR |
WRITETEXT |
TEXTVALID |
カラムの「テキスト」データ・タイプがテキストである場合列子ため、それは、次の例のように左「=」「()」と他の操作を、使用されません。
テーブルを作成し、データを移入:
(ID = OBJECT_ID( '[ASDF]')sysobjectsにSELECT * FROMおよびOBJECTPROPERTY(ID、 'IsUserTable')= 1)が存在する場合
DROP TABLE [空自]
CREATE TABLE [ASDF](
[inttest] [INT] IDENTITY(1,1)NULL NOT、
[テキスト] [テキスト] NULL、
【varcharmax] VARCHAR(MAX)NULL)
ALTER TABLEは、[ASDF] NOCHECK WITH CONSTRAINTを追加[PK_asdf] PRIMARY KEY NONCLUSTERED([inttest])
SET IDENTITY_INSERT [ASDF] ON
INSERT [ASDF]([inttest]、[テキスト]、[varcharmax])の値(1、 '1111111'、 '1111111')
SET IDENTITY_INSERT [ASDF] OFF
クエリを実行します。
クエリ:
SELECT [テキスト]
[varcharmax]
[TESTDB] FROM [DBO]。[空自]
どこ
[テキスト] = '11111' AND
【varcharmax] = '1111111'
あなたは、次のエラーメッセージが表示されます。
メッセージ402、レベル16、状態1、行1
VARCHARおよびテキスト・データ・タイプは、オペレータに等しく互換性がありません。
クエリ2:
SELECT [テキスト]
[varcharmax]
[TESTDB] FROM [DBO]。[空自]
どこ
【varcharmax] = '1111111'
正常に実行
上記バージョンMS SQL2005および大きな値のデータ型(VARCHAR(MAX)、NVARCHAR(MAX)、VARBINARY(MAX))を添加しました。データ型は、データの2 ^ 30-1バイトに大きな値を格納することができます。
行動におけるこれらの小さいデータ型とデータ型 VARCHAR、NVARCHAR 、および varbinary型 と同じ。
Microsoftの引数は、の代わりにこのデータ型を使用する前に、ということであるテキスト、ntext型 および イメージ データタイプ、それらの間の対応:
varchar型(最大)-------テキスト。
ntext型データ型はnvarchar(MAX)-----。
varbinary型(最大)----画像。
大きな値のデータ型とした後、ときに以前より大きいデータ操作の値より柔軟。例:テキストは「のような」を使用することはできません前に、それはvarchar型(最大)の後に、同じvarchar型(最大)上のvarchar(n)のために行動して、これらの問題を持っていない、varcahrの両方で使用することが可能ですvarchar型(最大)で使用されます。
加えて、これはまた、サポート挿入および削除トリガ後に使用上のテーブル大きな値データ型のカラム参照を。テキストは動作しません、簡単に言えば、大きな値のデータ型に続いて、私は「戻って怪我をしない、と足が痛みはありません、息も6階にすることができます。」でした しかし、だから何、それはすぐに大きな値の型を持ちます。
2014年10月16日11時34分19秒
SQL Serverデータベースのデータ型を習得する学習を格納しているあまりにも良いではない、私は著者が今までに若者が、合計すると言って作者にほとんどの情報を見て言ってたと思います。
1.データの種類との対応関係は:
varchar型(最大)-------テキスト。
ntext型データ型はnvarchar(MAX)-----。
varbinary型(最大)----画像。
データを保存する2.今テキストしないようにしよう、ntext型、イメージタイプ
スペースの考慮事項3.は、varchar型の適切なと(実際にまたはvarcharを使用しようと、結局、今ビッグデータの時代である);効率の観点から、文字適切で、キーが実際の状況に基づいたトレードオフを見つけることです。
4.、nvarcharデータ型をNCHARを使用して文字入力が英語または中国語の文字の場合に、より便利な心配はなく、時に英語の記憶喪失額の一部をしないでください。だから、一般的には、それはNCHAR / NVARCHARで、中国語の文字が含まれている場合、平易な英語とデジタルの場合、CHAR / VARCHARと
5。
多言語サイトは、文字変換の問題を最小限に抑えるためにUnicodeのnchar型またはnvarcharデータ型を使用して検討すべきでサポートしています。
あなたは同じサイズに近い列のデータ値が必要な場合は、文字を使用します。
列内のデータ値の所望のサイズが大幅に異なる場合、VARCHARを使用します。
あなたは同じに近いすべてのデータ項目の列サイズをしたい場合は、NCHARを使用しています。
あなたは、列項目の大きさに大きな差をつけたい場合は、nvarchar型を使用します。
CREATE TABLEまたはALTER TABLEのSET ANSI_PADDINGがOFFの場合、NULLとして定義されチャー列はVARCHARとして扱われます。
6。
データの量が非常に大きいですが、また、100%の一定の長さとは、単にANSI文字を保存する場合は1)、CHAR
、長さを決定することができます2)は、必ずしもANSIまたは文字を意味するものではありません、そして、NCHAR使用
3)不定長さ、およびクエリに使用しますインデックス、その後、nvarchar型はそれをタイプ使い、彼らは400に設定されます;
4)、その後、何もクエリは実際にありますしませんが、データ型はnvarchar(4000)を使用します
7。
対処すべきCHAR、NCHAR固定長、高速、大空間、
VARCHAR、NVARCHAR、TEXT可変長、小さな空間が、スローに対処することなく
NCHAR、NVARCHAR、NTEXTは、Unicodeコードを扱います
https://www.cnblogs.com/smilefortoday/p/4028421.htmlからの振替