0

winアプリケーション/asp.netアプリケーションへのユーザーテキスト入力と、SQLServerに格納されたデータに適切なフィールドサイズをよりよく理解する必要があります。

すべてが ASCII の場合、これは単純なように思えますが (各文字に 1 バイト)、ユーザーが入力フィールドにテキストを入力するときに何が起こっているのか本当に理解できないと思います。入力が UniCode の場合、(一般に) 1 文字あたり 2 バイト (?) であり、テキスト入力が 5 文字を超えることができないことがわかっている場合、SQL 列は varchar(10) である必要がありますか??? 入力が ANSI か Unicode かを知るにはどうすればよいですか??

うまくいけば、これは理にかなっています。これは、Web ページまたは win アプリがデータのエンコード方法を決定する方法に関して、私が完全に理解したことがないことです。

4

2 に答える 2

4

列を作成するときは、Unicode であるかどうかに関係なく、格納する必要がある文字数を指定します。5文字まで必要ですか?次に、実際にUnicodeが必要かどうかに応じて、VARCHAR(5)またはのいずれかになります。これはビジネス上の議論であり、技術的な議論ではありません。2 バイトは、列の定義とは関係ありません。これはストレージサイズに関するものです。したがって、aは完全に実装されている場合は 5 バイト、完全に実装されている場合は 10 バイトが必要です。列を定義するときに、これらの実装の詳細について心配する必要はありません。ただし、理由もなくスペース要件を 2 倍にするのは無駄なので、選択する前に Unicode が必要であることを確認する必要があります。NVARCHAR(5)VARCHAR(5)NVARCHAR(5)

(そのような列が であるべきかどうかCHAR/NCHAR、null バイトのオーバーヘッドなどに関する引数を無視します。)

于 2013-10-24T15:27:17.773 に答える
2

SQL 列は、バイト サイズではなく、文字サイズで設定されます。の列はvarchar(10)10 文字を受け入れます。Unicode 入力を使用する場合は、10 文字を使用するように設定するのが最善ですnvarchar(10)が、その列へのすべての Unicode 入力が許可されます。についても同様ですntext text nchar char。SQL データ型を理解するための優れた MSDN ページは、http://technet.microsoft.com/en-us/library/ms187752.aspxにあります。ASP.NET サイトのテキスト ボックスに何を入力するかについては、そのテキスト ボックスに何でも入力できます。コードを介して、入力したい内容のルールを適用するのはユーザー次第です。

于 2013-10-24T15:28:26.577 に答える