小编Jac*_*ung的帖子

我应该使用 PostgreSQL 位串吗?

我最近一直在学习bit string数据类型,我很好奇:

  1. 这个文档页面的底部有一句话:

    ...加上 5 或 8 个字节的开销,具体取决于字符串的长度

  2. 在其他语言(如 PHP、Java、C#、C++ 等)中,如何通过 Npgsql、ODBC 等驱动程序处理位字符串?

对于问题 #1,使用 smallint 或 bigint 将提高存储效率,并且可能会提供性能提升,因为在任何地方都支持整数。大多数编程语言都可以轻松处理整数的位操作。如果是这样,那么引入位串数据类型的意义何在?是否仅适用于需要大量位掩码的情况?位域索引可能吗?我对 PostgreSQL 中如何进行位域索引比较好奇。

对于#2,我很困惑,不仅仅是好奇。例如,如果我将工作日位掩码存储在 bit(7) 字段中,一天一位,最低位代表星期一。然后我在 PHP 和 C++ 中查询该值。我会得到什么?文档说我会有一个位串,但是位串不是我可以直接使用的 - 就像整数一样。那么在这种情况下,我应该放弃位域吗?

任何人都可以详细说明为什么以及何时应该使用一点或一点变化?

postgresql

20
推荐指数
2
解决办法
2万
查看次数

为什么是 ORA-00932:不一致类型错误?

抱歉这个毫无意义的标题,但我想不出更好的标题。我正在使用 Oracle 11g r2。

以下查询引发 ORA-00932 错误:

SELECT BBB.FIELD1 FROM TABLE0 AAA
  JOIN (SELECT * FROM (SELECT AAA.*, RANK() OVER (PARTITION BY SUBSTR(FIELD1,1,1) ORDER BY SUBSTR(FIELD1,1,1),ROWNUM) AS RANK
      FROM TABLE1@DBLINK AAA WHERE UPPER(NAME)!='XXX')
    WHERE RANK<=1) BBB ON CAST(CAST(CAST(SUBSTR(BBB.FIELD1,2,LENGTH(BBB.FIELD1)-2) AS NUMBER) AS VARCHAR2(10))||SUBSTR(BBB.FIELD1,LENGTH(BBB.FIELD1)) AS VARCHAR2(4000))=CAST(CAST(CAST(SUBSTR(AAA.FIELD0,2,LENGTH(AAA.FIELD0)-2) AS NUMBER) AS VARCHAR2(10))||SUBSTR(AAA.FIELD0,LENGTH(AAA.FIELD0)) AS VARCHAR2(4000));
Run Code Online (Sandbox Code Playgroud)

但是,以下查询完全正常。

SELECT * FROM TABLE0 AAA
  JOIN (SELECT * FROM (SELECT AAA.*, RANK() OVER (PARTITION BY SUBSTR(FIELD1,1,1) ORDER BY SUBSTR(FIELD1,1,1),ROWNUM) AS RANK
      FROM TABLE1@DBLINK AAA WHERE UPPER(NAME)!='XXX')
    WHERE RANK<=1) BBB …
Run Code Online (Sandbox Code Playgroud)

oracle oracle-11g-r2

5
推荐指数
1
解决办法
2万
查看次数

标签 统计

oracle ×1

oracle-11g-r2 ×1

postgresql ×1