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