一尘不染

从整数转换为二进制然后在SQL Server中转换

sql

整个早晨,我一直在用头撞墙。

以下SQL代码及其结果对我来说没有意义:

select CONVERT(INT, CONVERT(BINARY(30),2691485888))

结果是:

-1060082528

什么?为什么结果不等于我的原始整数?

我的整个目标是将整数转换为字节并将这些字节存储到数据库中,但是却没有使这个基本示例正常工作。谁能解释我在做什么错?

顺便说一句,我正在使用Sql Server 2005(9.0.4340)


阅读 124

收藏
2021-05-23

共1个答案

一尘不染

正如我在较早的评论中所指出的,2,691,485,888比廉政局所能容纳的更大。

这将起作用:

select CONVERT(BIGINT, CONVERT(BINARY(30), CONVERT(BIGINT, 2691485888)))
2021-05-23