マルチバイト文字をサポートしているのは だけですかnvarchar
? そうであれば、ストレージの問題以外に を使用する意味は本当にあるのでしょうかvarchars
?
ベストアンサー1
列nvarchar
には、任意の Unicode データを格納できます。varchar
列は 8 ビット コード ページに制限されます。varchar
スペースをあまり取らないので、8 ビット コード ページを使用するべきだと考える人もいます。私は、これは正しい答えではないと思います。コード ページの非互換性は厄介な問題であり、Unicode はコード ページの問題を解決するものです。最近のディスクとメモリは安価であるため、コード ページをいじくり回して時間を無駄にする理由はもうありません。
nvarchar
最新のオペレーティング システムと開発プラットフォームはすべて、内部的に Unicode を使用しています。ではなく を使用するとvarchar
、データベースの読み取りまたは書き込みのたびにエンコード変換を行う必要がなくなります。変換には時間がかかり、エラーが発生しやすくなります。また、変換エラーからの回復は簡単な問題ではありません。
ASCII のみを使用するアプリケーションとインターフェイスする場合でも、データベースでは Unicode を使用することをお勧めします。OS とデータベースの照合アルゴリズムは Unicode を使用するとより適切に機能します。Unicode を使用すると、他のシステムとインターフェイスするときに変換の問題を回避できます。また、将来に備えることもできます。また、完全な Unicode ストレージの利点を享受しながらも、保守する必要があるレガシー システムのデータが 7 ビット ASCII に制限されていることを常に検証できます。