我有一个十六进制值作为varchar导入,例如'0x400007'。 我希望能够将0x40007转换为其他数据类型进行分析。
select convert(varbinary(max),0x400007)
返回0x400007但字符串
select convert(varbinary(max),'0x400007')
返回0x3078343030303037。 如何让文本字符串返回0x40007?最终,我的目标是使用
select convert(int,0x400007)
并进一步操作 int 值,4194311在本例中,在其他函数中操作。 自从我不得不用十六进制思考以来,这是一个狗的时代,所以任何帮助将不胜感激。
谢谢!
0x400007
和'0x400007'
实际上不是同一个值。当您简单地转换表示varbinary
值的varchar
值时,它将被转换为它的实际varbinary
值,该值(如您所发现的(是0x3078343030303037
。30
是0
,78
是x
,34
是4
,30
是0
(注意你有多个(,最后37
是7
。
您需要使用样式代码,让 SQL Server 知道varchar
表示varbinary
,它会按预期对其进行转换:
SELECT CONVERT(varbinary(MAX), '0x400007', 1);