Mysql vs sql express 服务器(HEX -> bigint 和 bigint -> HEX 转换)
Mysql vs sql express server (HEX -> bigint and bigint -> HEX conversion)
我是 SQL Express 服务器的新手,正在尝试再次将 HEX 转换为 bigint,再将 bigint 转换为 HEX。但是,我注意到 MySQL 和 SQL express 服务器计算给出了不同的结果。
HEX 转 bigint:
MySQL:
SELECT CONV('DA346CC793AD1510',16,10);
输出:
15723311803489129744
SQL 快递 :
SELECT CAST(CONVERT(VARBINARY(MAX), 'DA346CC793AD1510', 2) AS BIGINT);
输出:
-2723432270220421872
为什么 MySQL 和 SQL express 服务器给出不同的输出?从数学的角度来说,肯定是一样的。
然而,在 MySQL 和 SQL express 服务器中,bigint 到 HEX 的转换给出了相同的结果。
MySQL: select conv(column_name,10,16);
SQL快递select FORMAT(column_name,'X');
SQL express 服务器将 HEX 转换为 bigint 以及将 bigint 转换为 HEX 的正确方法是什么?我错过了什么吗?
"Why MySQL and SQL express servers give different outputs? From a mathematical point of view, it must be the same."
BIGINT 上限是 2 的 63 次方 - 1:
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
我是 SQL Express 服务器的新手,正在尝试再次将 HEX 转换为 bigint,再将 bigint 转换为 HEX。但是,我注意到 MySQL 和 SQL express 服务器计算给出了不同的结果。
HEX 转 bigint:
MySQL:
SELECT CONV('DA346CC793AD1510',16,10);
输出:
15723311803489129744
SQL 快递 :
SELECT CAST(CONVERT(VARBINARY(MAX), 'DA346CC793AD1510', 2) AS BIGINT);
输出:
-2723432270220421872
为什么 MySQL 和 SQL express 服务器给出不同的输出?从数学的角度来说,肯定是一样的。
然而,在 MySQL 和 SQL express 服务器中,bigint 到 HEX 的转换给出了相同的结果。
MySQL: select conv(column_name,10,16);
SQL快递select FORMAT(column_name,'X');
SQL express 服务器将 HEX 转换为 bigint 以及将 bigint 转换为 HEX 的正确方法是什么?我错过了什么吗?
"Why MySQL and SQL express servers give different outputs? From a mathematical point of view, it must be the same."
BIGINT 上限是 2 的 63 次方 - 1:
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