mssql转换varchar字符串中的实际十六进制,以便转换为int和varbinary

r55awzrz  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(686)

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

select convert(varbinary(max),0x400007)

返回0x400007字符串

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

返回0x30783430303037。如何让文本字符串返回0x40007?最终,我的目标是

select convert(int,0x400007)

并在其他函数中进一步操作int值,本例中为4194311。这是一个狗的年龄,因为我已经认为在十六进制,所以任何帮助将不胜感激。
谢谢!

nom7f22z

nom7f22z1#

0x400007 以及 '0x400007' 实际上不是相同的值。当你简单地转换 varchar 表示 varbinary 值,它将转换为实际值 varbinary 值,即 0x3078343030303037 . 300 , 78x , 344 , 300 (注意你有多个)最后 377 .
您需要使用样式代码,以便让SQLServer知道 varchar 表示 varbinary 它会像你期望的那样转换它:

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

相关问题