MSSQL在varchar字符串中转换实际的十六进制,以便我可以转换为INT和Varbinary

问题描述 投票:0回答:1

我有一个十六进制值作为varchar导入,例如'0x400007'。我希望能够将0x40007转换为其他数据类型以进行分析。

select convert(varbinary(max),0x400007)

返回0x400007,但是返回字符串

select convert(varbinary(max),'0x400007')

返回0x3078343030303037。如何获取文字字符串以返回0x40007?最终,我的目标是使用

select convert(int,0x400007)

并在其他函数中进一步操纵int值,在此示例中为4194311。自从我不得不三思而后行以来,这已经是狗狗时代了,因此不胜感激。

谢谢!

sql sql-server type-conversion hex
1个回答
0
投票

0x400007'0x400007'实际上不是相同的值。当您简单地转换代表varchar值的varbinary值时,它将转换为它的实际varbinary值,(您发现)是0x307834303030303730078x344300(注意您有多个),然后最后377

您需要使用样式代码,以使SQL Server知道varchar代表varbinary,它将按您期望的那样进行转换:

SELECT CONVERT(varbinary(MAX), '0x400007', 1);
© www.soinside.com 2019 - 2024. All rights reserved.