从整数转换为二进制并返回SQL Server

Sli*_*345 6 sql t-sql sql-server

我整个上午一直用这个撞在墙上.

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

select CONVERT(INT, CONVERT(BINARY(30),2691485888))
Run Code Online (Sandbox Code Playgroud)

这导致:

-1060082528
Run Code Online (Sandbox Code Playgroud)

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

我的整个目标是将一个整数转换为字节并将这些字节存储到数据库中,但是没有让这个基本的例子工作,我被卡住了.谁能解释我做错了什么?

顺便说一句,我使用的是Sql Server 2005(9.0.4340)

Joe*_*lli 10

正如我在之前的评论中指出的那样,2,691,485,888比INT所能容纳的要大.

这将有效:

select CONVERT(BIGINT, CONVERT(BINARY(30), CONVERT(BIGINT, 2691485888)))
Run Code Online (Sandbox Code Playgroud)