master.sys.fn_varbintohexsubstring(0,convert(varbinary,<任意の数値>),1,0)fn_varbintohexsubstringはドキュメントレスなプロシージャのようでMSDNでの情報が無い。
プロシージャの仕様を確認するのには
sp_helptext 'fn_varbintohexsubstring'SQL Serverのバージョンによって利用できるプロシージャ名が異なるので注意。
- SQL7:master.dbo.xp_varbintohexstr
- SQL2000:master.dbo.fn_varbintohexstr / master.dbo.fn_varbintohexsubstring
- SQL2005:master.sys.fn_varbintohexstr / master.sys.fn_varbintohexsubstring
最初、ぐぐって Stigma - in the public_enemy - [SQL] SQLServer - 10進数→16進数変換 を参考にさせて頂こうとしたけど、 このページで紹介されているやり方だと16進で2桁までしか対応していないようで、採用しませんでした。 以下、比較
declare @var bigint; set @var = 15 print 'convert dec to hex : ' + convert(varchar,@var) print STUFF((master.dbo.fn_varbintohexstr(cast(cast(@var as bigint) as binary(1))) COLLATE Latin1_General_CI_AS_KS_WS ),1,2,'') print master.sys.fn_varbintohexsubstring(0,convert(varbinary,@var),1,0) set @var = 511 print 'convert dec to hex : ' + convert(varchar,@var) print STUFF((master.dbo.fn_varbintohexstr(cast(cast(@var as bigint) as binary(1))) COLLATE Latin1_General_CI_AS_KS_WS ),1,2,'') print master.sys.fn_varbintohexsubstring(0,convert(varbinary,@var),1,0) set @var = 65535; --0xFFFF print 'convert dec to hex : ' + convert(varchar,@var) print STUFF((master.dbo.fn_varbintohexstr(cast(cast(@var as bigint) as binary(1))) COLLATE Latin1_General_CI_AS_KS_WS ),1,2,'') print master.sys.fn_varbintohexsubstring(0,convert(varbinary,@var),1,0) set @var = 65536; --0x1 0000 print 'convert dec to hex : ' + convert(varchar,@var) print STUFF((master.dbo.fn_varbintohexstr(cast(cast(@var as bigint) as binary(1))) COLLATE Latin1_General_CI_AS_KS_WS ),1,2,'') print master.sys.fn_varbintohexsubstring(0,convert(varbinary,@var),1,0) set @var = 4294967295 --0xFFFF FFFF print 'convert dec to hex : ' + convert(varchar,@var) print STUFF((master.dbo.fn_varbintohexstr(cast(cast(@var as bigint) as binary(1))) COLLATE Latin1_General_CI_AS_KS_WS ),1,2,'') print master.sys.fn_varbintohexsubstring(0,convert(varbinary,@var),1,0)
0 件のコメント:
コメントを投稿