Postgres BIGINT的最大值

伊吉

是否可以在BIGINT不进行硬编码的情况下获取类型的最大值

我知道该限制是众所周知的,但是我不想对其进行硬编码。

爆炸物

您可以使用pg_column_size,它将为您提供bigint的字节大小。使用它可以获得最大和最小尺寸:

select  (2^(8*pg_column_size(1::bigint)-2))::bigint << 1 as min_bigint_value;
select  -(((2^(8*pg_column_size(1::bigint)-2))::bigint << 1)+1) as max_bigint_value;

因此,如果将来bigint最大值以某种方式改变(非常非常不可能),那么如果您依靠这些计算出的值,您的代码仍然可以工作。

您可以编写函数以方便使用:

CREATE OR REPLACE FUNCTION "get_max_bigint_value"() RETURNS BIGINT as $$
DECLARE
    max_bigint_value BIGINT;
BEGIN
    SELECT  -(((2^(8*pg_column_size(1::BIGINT)-2))::BIGINT << 1)+1) INTO max_bigint_value;
    RETURN max_bigint_value;
END
$$ LANGUAGE "plpgsql";

CREATE OR REPLACE FUNCTION "get_min_bigint_value"() RETURNS BIGINT as $$
DECLARE
    min_bigint_value BIGINT;
BEGIN
    SELECT  (2^(8*pg_column_size(1::bigint)-2))::bigint << 1 INTO min_bigint_value;
    RETURN min_bigint_value;
END
$$ LANGUAGE "plpgsql";

接着:

SELECT get_min_bigint_value();
SELECT get_max_bigint_value();

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Postgres 8.4中获得每天的最小/最大值

来自分类Dev

什么是postgres uuid_generate_v4()最大值?

来自分类Dev

发生时间后每小时的Postgres最大值

来自分类常见问题

Postgres如何在最小值列和最大值列之间返回值

来自分类Dev

Postgres如何在最小值列和最大值列之间返回值

来自分类Dev

如何在Postgres中选择多个不同的值和最大值?

来自分类Dev

如何在postgres中找到与同一列相同的列的最大值和值?

来自分类Dev

Postgres:获取与组中其他列的最大值相对应的列的值

来自分类Dev

从Postgres记录中的行中获取最大值,并按多列分组

来自分类Dev

选择组中在特定列postgres中具有最大值的行

来自分类Dev

找到两列之间的最大值并在 postgres 中相应地更新

来自分类Dev

Postgres SQL:如何为Postgres中的相同时间戳选择“媒体”列中的最大值?

来自分类Dev

如何在Postgres中检索具有另一个最大值分组的最大值的完整记录?

来自分类Dev

Postgres:一次选择即可获得最小值,最大值,合计值

来自分类Dev

Postgres:一次选择即可获得最小值,最大值,合计值

来自分类Dev

在Postgres中创建表时,CHARACTER(n),CHARACTER VARYING(n)和TEXT数据类型中'n'的最小值和最大值是多少?

来自分类Dev

确定Postgres数值最大最小值

来自分类Dev

确定Postgres数值最大最小值

来自分类Dev

Postgres BIGINT超出范围

来自分类Dev

预期的最大值

来自分类Dev

varchar的最大值

来自分类Dev

每行的最大值

来自分类Dev

AND运算的最大值

来自分类Dev

每行的最大值

来自分类Dev

JTextField的最大值

来自分类Dev

计算最大值

来自分类Dev

选择的最大值

来自分类Dev

从 postgres 日期和 postgres 时间获取 Postgres 时间戳值

来自分类Dev

Postgres列值分配

Related 相关文章

  1. 1

    在Postgres 8.4中获得每天的最小/最大值

  2. 2

    什么是postgres uuid_generate_v4()最大值?

  3. 3

    发生时间后每小时的Postgres最大值

  4. 4

    Postgres如何在最小值列和最大值列之间返回值

  5. 5

    Postgres如何在最小值列和最大值列之间返回值

  6. 6

    如何在Postgres中选择多个不同的值和最大值?

  7. 7

    如何在postgres中找到与同一列相同的列的最大值和值?

  8. 8

    Postgres:获取与组中其他列的最大值相对应的列的值

  9. 9

    从Postgres记录中的行中获取最大值,并按多列分组

  10. 10

    选择组中在特定列postgres中具有最大值的行

  11. 11

    找到两列之间的最大值并在 postgres 中相应地更新

  12. 12

    Postgres SQL:如何为Postgres中的相同时间戳选择“媒体”列中的最大值?

  13. 13

    如何在Postgres中检索具有另一个最大值分组的最大值的完整记录?

  14. 14

    Postgres:一次选择即可获得最小值,最大值,合计值

  15. 15

    Postgres:一次选择即可获得最小值,最大值,合计值

  16. 16

    在Postgres中创建表时,CHARACTER(n),CHARACTER VARYING(n)和TEXT数据类型中'n'的最小值和最大值是多少?

  17. 17

    确定Postgres数值最大最小值

  18. 18

    确定Postgres数值最大最小值

  19. 19

    Postgres BIGINT超出范围

  20. 20

    预期的最大值

  21. 21

    varchar的最大值

  22. 22

    每行的最大值

  23. 23

    AND运算的最大值

  24. 24

    每行的最大值

  25. 25

    JTextField的最大值

  26. 26

    计算最大值

  27. 27

    选择的最大值

  28. 28

    从 postgres 日期和 postgres 时间获取 Postgres 时间戳值

  29. 29

    Postgres列值分配

热门标签

归档