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