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



我有一个十六进制值作为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值,该值(如您所发现的(是0x307834303030303730078x344300(注意你有多个(,最后377

您需要使用样式代码,让 SQL Server 知道varchar表示varbinary,它会按预期对其进行转换:

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

相关内容

最新更新