2010年6月28日月曜日

[SQL]16進数でデータを表現する

先日、とあるシステムのテストをしました。DBはSQLServeを使っています。
そのシステムで採用されている開発言語では、varcharフィールドにSQLでデータを登録・更新する際、正しいレングスを設定しないと問題が発生します。

結果的に言うと、短めに設定された場合文字列が切れてしまい、長めに設定すると文字列の後ろに0x00が設定されるというものでした。
それを知らずに、後者のような障害があったとき、最初varcharなのに後ろにスペースがつくなんて。。。
と思って16進数で表示してみると0x00であることがわかりました。コードはこんな感じ。

declare @hoge varchar(10)  
set @hoge = '123abc'

print convert(varbinary, @hoge)

0 件のコメント: