sql >> データベース >  >> RDS >> Sqlserver

SQLServerでVARCHAR/CHARの代わりにNVARCHAR/NCHARを使用する必要があるのはいつですか?

    NVARCHARを使用する本当の理由は、異なるがある場合です。 同じ列の言語、デコードせずにT-SQLの列をアドレス指定する必要がある、SSMSでデータを「ネイティブに」表示できるようにする、またはUnicodeで標準化する必要があります。

    データベースをダムストレージとして扱う場合、幅の広い文字列とさまざまな(可変長の)エンコーディングをVARCHAR(UTF-8など)に格納することは完全に可能です。問題は、エンコードとデコードを試みているときに発生します。特に、コードページが行ごとに異なる場合に発生します。また、SQL Serverは、T-SQL内で(場合によっては可変的に)エンコードされた列をクエリする目的でデータを簡単に処理できないことも意味します。

    NVARCHARを使用すると、これをすべて回避できます。

    比較的制約のないユーザー入力データが含まれる列には、NVARCHARをお勧めします。

    自然キー(車両のナンバープレート、SSN、シリアル番号、サービスタグ、注文番号、空港のコールサインなど)である列には、VARCHARをお勧めします。これは通常、標準、法律、または規則によって定義および制約されます。また、ユーザーが入力し、非常に制約された(電話番号など)またはコード(ACTIVE / CLOSED、Y / N、M / F、M / S / D / Wなど)のVARCHAR。それらにNVARCHARを使用する理由はまったくありません。

    したがって、簡単なルールの場合:

    制約されることが保証されている場合はVARCHAR、そうでない場合はVARCHAR



    1. リモートホストからpostgresに接続できません

    2. SQL Server 2012 ServicePack1および累積的な更新プログラム1

    3. SQLServer2014の探索SELECTINTOParallelism

    4. MySQLとPostgresの両方で大文字と小文字を区別しないクエリをどのように記述しますか?