gpt4 book ai didi

postgresql - PostgreSQL 中的长数字和按位运算

转载 作者:行者123 更新时间:2023-11-29 12:16:48 25 4
gpt4 key购买 nike

有一个使用 PostgreSQL 数据库的 django 应用程序。
我们的任务是收集和存储 MSSQL Server 权限(它们的数量约为 120)。它实现为一个长数字,其中每一位是 1 个权限。
因此我们需要在 PostgreSQL 中存储一个非常长的数字,但它的最大数值是 64 位。这就是我们现在将 is 存储为字符串的原因。应用程序创建一个 SQL 查询,如:

SELECT "mssql_ace"."id", .... "mssql_ace"."permissions",

FROM "mssql_ace"

LEFT OUTER JOIN ... ON ...
...
WHERE (.... AND ("mssql_ace"."permissions" & 1) = 1)

ORDER BY ... ;

现在的问题是在 WHERE 部分。我们需要按位操作,这是一种通过权限过滤数据的方法,适用于整个应用程序,除此之外。我们不能对字符串使用按位运算。

我们试过在 PostgreSQL 中进行转换:

1. (CAST("mssql_ace"."permissions" AS BIGINT) & 1)

2. "mssql_ace"."permissions"::BIGINT & 1

还有其他的东西:

3. DECIMAL also doesn't support bitwise

我们有一个想法,可以将这个大数字分成两部分。但它需要大量的工作来改变应用程序内部。还有其他想法吗?我们不能改变的主要事情是按位运算的使用。

谢谢。

最佳答案

我不知道如何将它集成到 Django 中,但是逻辑上的 PostgreSQL 数据类型应该是 bit varying .它允许您有效地存储长位串。

关于postgresql - PostgreSQL 中的长数字和按位运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49510092/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com