arveltのソフトウェア技術メモ

Arvelt's software technology memo

SQLServerでvarcharとnvarcharの数え方。

char 型と varchar 型のデータの使用 http://msdn.microsoft.com/ja-jp/library/ms175055(v=sql.100).aspx

nchar および nvarchar (Transact-SQL)
http://msdn.microsoft.com/ja-jp/library/ms186939(v=sql.105).aspx



保守とあれば昔のバージョンに触れることもあります。SQLserver2008。
さて、整理するとこういうことです。

char(10)は10バイト。足りない分は半角スペースで埋められる。
varchar(10)は10バイト。足りない分はtrimされた状態で格納されている。
nchar(10)は10文字。足りない分は半角スペースで埋められる。
nvarchar(10)は10文字。足りない分はtrimされた状態で格納されている。


ついでにもう一つ。

DATETIME データ型のミリ秒に関する注意事項 - Microsoft SQL Server Japan Support Team Blog - Site Home -
MSDN Blogs http://blogs.msdn.com/b/jpsql/archive/2013/04/24/datetime.aspx

datetime型はミリ秒の制度が.000、.003、.007だということです。
最大値までと思って>999という条件をつけても丸められているので真になると限りません。
正確にミリ秒を保持したい場合はdatetime2を使いましょう。