bt

NVARCHARの桁数の罠


SQLServerにはVARCHARのユニコード対応版である、NVARCHARというデータ型があります。
このNVARCHAR型の桁数がなかなかの曲者なんです。


VARCHAR(10)には何文字格納できるか?


こう聞かれれば「半角10文字、全角5文字」と答える人が多いのではないでしょうか。
おそらくVARCHAR(10)の10は半角文字数と認識されていると思います。


ではNVARCHAR(10)ではどうでしょうか?


正解は「半角10文字、全角10文字」です。


NVARCHARはユニコードを扱うので、全ての文字を同じバイトで格納します。
従って半角全角の区別はありません。
NVARCHAR(10)の10は半角全角の区別なく、単純に文字数です。


この差を意識せずにNVARCHAR(10)をVARCHAR(10)に変換しようとすると
たちまち桁あふれエラーが発生してしまうので注意が必要です。