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

MSSQL Convert an actual hex in a varchar string so I can convert to INT and Varbinary

我将十六进制值导入为 varchar,例如“0x400007”。我希望能够将 0x40007 转换为其他数据类型以供分析。

select convert(varbinary(max),0x400007)

Returns 0x400007 但是字符串

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

Returns 0x3078343030303037。我怎样才能得到 return 0x40007 的文字字符串?最终,我的目标是使用

select convert(int,0x400007)

并在其他函数中进一步操作 int 值,在此示例中为 4194311。自从我不得不用十六进制思考以来,这已经是狗的年龄了,所以我们将不胜感激。

谢谢!

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

您需要使用样式代码,让 SQL 服务器知道 varchar 代表 varbinary 并且它会按照您的预期进行转换:

SELECT CONVERT(varbinary(MAX), '0x400007', 1);