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
值,(正如您发现的那样)是 0x3078343030303037
。 30
是 0
,78
是 x
,34
是 4
,30
是 0
(注意你有多个)然后最后 37
是 7
.
您需要使用样式代码,让 SQL 服务器知道 varchar
代表 varbinary
并且它会按照您的预期进行转换:
SELECT CONVERT(varbinary(MAX), '0x400007', 1);
我将十六进制值导入为 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
值,(正如您发现的那样)是 0x3078343030303037
。 30
是 0
,78
是 x
,34
是 4
,30
是 0
(注意你有多个)然后最后 37
是 7
.
您需要使用样式代码,让 SQL 服务器知道 varchar
代表 varbinary
并且它会按照您的预期进行转换:
SELECT CONVERT(varbinary(MAX), '0x400007', 1);