SQLServer varcharとnvarcharの違い
varchar はバイト数。
nvarchar は文字数。
実験。
半角と全角の文字を変数に格納して SELECT で表示してみる。
declare @x1 AS varchar(3) = '123';
declare @y1 AS nvarchar(3) = '123';
declare @x2 AS varchar(3) = 'あいう';
declare @y2 AS nvarchar(3) = 'あいう';
select @x1 as x1,@y1 as y1,@x2 as x2,@y2 as y2
実行するとこうなる。
x1 y1 x2 y2
---- ---- ---- ----
123 123 あ あいう
桁数をオーバーした文字は、消えている。
SQL の実行はエラーにならないので、注意が必要。
全角文字は 2 バイト扱いになっているようだ。
declare @x3 AS varchar(3) = 'あ12';
select @x3 as x3
x3
----
あ1