Sql server 在sql中将整数转换为十六进制

Sql server 在sql中将整数转换为十六进制,sql-server,Sql Server,我想在SQL中将int转换为hexadecimal 例如: SELECT CONVERT(VARBINARY(8), 162) 结果:0x000000A2 实际值是多少 A2 为什么我在前缀中得到了不必要的部分 我可以删除前一部分吗 什么是正确的处理方法?引用以下内容: 当其他数据类型转换为binary或varbinary时,数据将在左侧填充或截断。填充是通过使用十六进制零实现的 您在查询中指定的是VARBINARY(8),因此结果将用零填充到该长度。如果出于某种原因需要不带填充的值,请指定V

我想在SQL中将
int
转换为
hexadecimal

例如:

SELECT CONVERT(VARBINARY(8), 162)
结果:0x000000A2

实际值是多少

A2

为什么我在前缀中得到了不必要的部分

我可以删除前一部分吗

什么是正确的处理方法?

引用以下内容:

当其他数据类型转换为binary或varbinary时,数据将在左侧填充或截断。填充是通过使用十六进制零实现的

您在查询中指定的是
VARBINARY(8)
,因此结果将用零填充到该长度。如果出于某种原因需要不带填充的值,请指定
VARBINARY(1)
,该值将返回
0xA2

注意:它们都是相同的值

或者,如果您只需要2个字符的字符串:

选择RIGHT(CONVERT(VARCHAR(8),CONVERT(VARBINARY(8),162),2),2)


在OP没有任何响应的情况下,将以完全的总猜测返回
A2

SELECT V.BloatedHex,
       ISNULL(STUFF(V.BloatedHex,1,NULLIF(PATINDEX('%[^0]%',V.BloatedHex),0)-1,''),0)
FROM (VALUES(STUFF(CONVERT(varchar(10),CONVERT(varbinary(8),162),1),1,2,''))) V(BloatedHex);

这将返回
varchar(10)
'A2'

您可以在这样一个语句中执行

DECLARE @someNumber BIGINT = 162;

WITH Hex AS (
SELECT CONVERT(VARCHAR(34), CONVERT(VARBINARY(8), @someNumber), 2) [Value]
)
SELECT SUBSTRING([Value], PATINDEX('%[^0]%', [Value]), 34) FROM Hex
)

这不会使用任何不受支持的内部函数,也不会尝试最小化字符串操作


更好的是,不要用TSQL编写这种表示代码,这不是它擅长的。当您向用户显示值时,担心会使它看起来漂亮

什么不必要的部分?这个值对于
varbinary
来说是正确的,对我来说可能是重复的。PRINT CONVERT(VARCHAR(8),CONVERT(varbinary(1),162),2)@Pinky,好的,只要你知道有效数字的长度