首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当结果值大于bigint时,如何在SQL中将十六进制数转换为整数?

当结果值大于bigint时,如何在SQL中将十六进制数转换为整数?
EN

Stack Overflow用户
提问于 2015-12-11 12:52:07
回答 1查看 1.2K关注 0票数 0

我有一个字符串形式的十六进制数字,例如,0x47423f34b640c3eb6e2a18a559322d68。当我尝试将其转换为int,以便与另一个int值进行比较时,我遇到了BIGINT大小限制。我尝试了各种方法,如十进制等,但似乎无法超过64位大小的限制。

理想情况下,我想要一个从十六进制字符串转换为整型字符串的转换,这样我就可以绕过整型限制。然而,在不使用中间转换(转换到超出范围的值)的情况下这样做会给我带来一些问题。

另一种解决方案是能够将十进制字符串(另一个比较值,在给定示例中为94719161261466374640962917648041127272)转换为十六进制或二进制进行比较。我已经有一个例程可以在不溢出中间变量的情况下将任意长度的十六进制字符串转换为二进制,但我在不使用中间变量的情况下将十进制字符串转换为二进制的运气不是很好,所以我目前也不能以这种方式比较它们。

我已经有了一个用于这种转换的基于c#的解决方案,所以我可以使用SQL或其他类似的解决方案,但我更喜欢使用原生SQL方法来进行这种转换(十进制字符串到十六进制字符串或二进制字符串,或者十六进制字符串到十进制字符串或二进制字符串)。

EN

回答 1

Stack Overflow用户

发布于 2015-12-11 12:57:17

SQL Server2008版本更新了See CONVERT() here函数,使其能够转换十六进制值:

代码语言:javascript
运行
复制
select convert(bigint, convert (varbinary(8), '0x0000010d1858798c', 1))

结果:

代码语言:javascript
运行
复制
1155754654092 (decimal) ( ==  0x0000010d1858798c )
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34216360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档