我有一张名为
Table A
的表,它有三个字段aa ab ac
。 ac
在 PostgreSQL 中是 Boolean
,在迁移到 oracle db
时我已经做到了 Number(1)
。但在后端代码中,我编写了类似 SELECT * FROM A where ac = true
的 SQL 查询。 在不更改 SQL 查询的情况下,我想从 oracle db 获取数据。请让我知道这可能或不可能。如果可能的话我应该遵循哪种方法。
您必须更改 SQL(代码)。 没有其他办法解决它。 Oracle SQL 不支持布尔值。
这个问题的解决方案很简单。 在 Oracle 端创建一个视图,并将布尔列转换为整数,然后从视图中进行选择。
pg:创建视图 jed 作为选择 id,isnew::integer from thattable;
pg:将 jed 上的 select 授予公众; -- 是的,不要公开:)
oracle:从jed@link2pg中选择*; (您获得了数据,不再有 ORA-00600)
如果服务是Python,我建议你在 PostgreSQL 中将其保留为整数,并设置一个检查约束以仅接受 0 或 1 的值。在 ORM 中进行映射时,你可以对 0 执行
int(False)
,对 1 执行 int(True)
,然后将其保存到数据库。