首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql vs sql express server (HEX -> bigint和bigint -> HEX转换)

Mysql vs sql express server (HEX -> bigint和bigint -> HEX转换)
EN

Stack Overflow用户
提问于 2020-05-12 07:37:42
回答 1查看 204关注 0票数 1

我是服务器的新手,并试图再次将HEX转换为bigint和bigint到HEX。但是,我注意到MySQL和SQL服务器计算给出了不同的结果。

HEX到bigint

MySQL:

代码语言:javascript
复制
SELECT CONV('DA346CC793AD1510',16,10);

输出:

代码语言:javascript
复制
15723311803489129744

SQL

代码语言:javascript
复制
SELECT CAST(CONVERT(VARBINARY(MAX), 'DA346CC793AD1510', 2) AS BIGINT); 

输出:

代码语言:javascript
复制
-2723432270220421872

为什么MySQL和servers服务器提供不同的输出?从数学的角度来看,它必须是一样的。

但是,在MySQL和servers服务器中,bigint到HEX的转换结果都是相同的。

MySQLselect conv(column_name,10,16);

SQL Express select FORMAT(column_name,'X');

在服务器中,将HEX转换为bigint,将bigint转换为HEX的正确方式是什么?我是不是遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-13 14:40:16

“为什么MySQL和servers服务器提供不同的输出?从数学的角度来看,它必须是相同的。”

比格纳上限范围为2到电源63 - 1:

代码语言:javascript
复制
 9,223,372,036,854,775,807   -- upper range of BIGINT
15,723,311,803,489,129,744   -- converted "DA346CC793AD1510" value

BIGINT无法存储这样的值,只会溢出:

9,223,372,036,854,775,807 -> (overflow) -> starting from the lowest value (-9,223,372,036,854,775,808) + (15,723,311,803,489,129,744 - 9,223,372,036,854,775,807) -> -2,723,432,270,220,421,872

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61746221

复制
相关文章

相似问题

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