bigint表示的最大值

Cor*_*rei 7 sql t-sql

有没有办法获得可以存储在bigint中的最大值,而无需对其进行硬编码?

是否有返回/包含此值的函数或常量?

Mit*_*eat 16

一个bigint总是会支持

-2^63 (-9,223,372,036,854,775,808) to 2^63-1 (9,223,372,036,854,775,807)
Run Code Online (Sandbox Code Playgroud)

SQL Server TSQL不将此定义为常量,但始终为-2 ^ 63到2 ^ 63 - 1

参考:int,bigint,smallint和tinyint(Transact-SQL)

  • @Corovei - 他们将在更改现有数据类型之前添加一个新的数据类型,如`HUGEint`. (7认同)
  • @Corovei Andrei这样的改变极不可能因为你自己描述的原因 - 微软宁愿创建一个新的整数类型(当添加一个新的日期类型时,`datetime`保持不变并且创建了一个新的`datetime2`类型). (4认同)
  • bigint始终为8个字节。总是。 (2认同)
  • @Corovei Andrei:经验表明,有时候人们没有问正确的问题... (2认同)
  • @JNK:确切地说.MS在二十年的AFAIK中没有打破数据类型. (2认同)

Sam*_*aan 8

请参阅此类似问题中提供的答案.据我所知,没有办法以编程方式找到您正在寻找的答案.

根据您在另一个答案中发布的评论,这将允许您只需在一个地方更改您的值,而不是多个地方.


Eli*_*ing 5

您还可以创建一个简单的用户定义函数来返回最大 bigint 值:

CREATE FUNCTION maxbigint() RETURNS bigint
AS 
BEGIN
    RETURN CAST(0x7FFFFFFFFFFFFFFF AS bigint)
END
GO
Run Code Online (Sandbox Code Playgroud)

然后您可以通过调用它来在任何您想要的地方使用它:dbo.maxbigint()