SQL查询将十六进制字符串插入varbinary(max)会产生错误的结果

时间:2018-04-12 11:04:38

标签: sql sql-server sql-server-2008

使用以下sql查询,我将错误输入到我的数据库(Microsoft SQL Server 2008)表中:

INSERT INTO [dbo].[test]([ExampleWorking],[ExampleWrong])VALUES(0xFF, 0xFFFF)

而示例工作& ExampleWrong都是VARBINARY(max)

数据库中的结果是:

ExampleWorking = 0xFF ExampleWrong = 0x3F(我在这里期待0xFFFF)

我在这里想念什么? 我是SQL的新手,但它是数据类型。

2 个答案:

答案 0 :(得分:0)

试试这个。

    declare @varbinary varbinary(max), @hax varchar(max)
--   you can also cast hax to string or varbinary in this way
    set @hax = '0xFFFF'
    select @hax
    select @varbinary  = cast(@hax  as varbinary(max) )
    select  @varbinary 
    select cast(@varbinary   as varchar(max) )

答案 1 :(得分:0)

好的,我实际上解决了这个问题。这是HeidiSQL没有正确显示内容的问题。所以实际上在数据库中写了0xFFFF,但HeidiSQL(无论出于何种原因)在数据表视图中显示了0x3F ...

我实际上是懒得在HeidiSQL中查询它,但在我做之后,它显示我“yy”..然后在双击后它改为0xFFFF .....

无论如何,享受你的一天,感谢你的快速回复!

干杯!