二进制数据如何在SQL数据库中表示

时间:2011-03-17 12:27:36

标签: sql-server

我有一个名为X的字段,其中fieldtype是Binary(15)。 现在我用

更新表格
Update Table_name 
Set X = 567845329090989
Where some_condition

现在,在查看表格中执行上述命令后,我发现该列已使用以下内容进行更新

0x0000000F000001ADB920CB73040200

这也不是十六进制值。这是怎么回事?

2 个答案:

答案 0 :(得分:3)

  • 567845329090989是 bigint 十进制(15,0)
  • 使用Windows计算器,这是0x20473CB20B9AD
  • 以上值为0x0000000F000001 ADB920CB730402 00

我忘记了确切的详细信息,但这是do with endianess (SO)

答案 1 :(得分:2)

来自@gbn的评论。常量567845329090989读为十进制(15,0)而不是bigint。

declare @T table (X binary(15))

declare @X bigint = 567845329090989
declare @Y decimal(15,0) = 567845329090989

insert into @T values (@X)
insert into @T values (567845329090989)
insert into @T values (@Y)

select *
from @T

结果

X
--------------------------------
0x0000000000000000020473CB20B9AD
0x0000000F000001ADB920CB73040200
0x0000000F000001ADB920CB73040200