SQLServer varcharとnvarcharの違い

2017.11.26

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