的問題是,甲骨文沒有真正的布爾類型,但PostgreSQL裏面。其結果是:
SELECT true = '1';
返回 'T' 真正
SELECT true = 1;
可生產您所遇到的錯誤。如果您可以更改持久性以與引用(即未知)類型進行比較,那將解決問題。
如果你不能做到這一點,你可以創建自定義操作:
CREATE OR REPLACE FUNCTION comp_bool(bool, int) RETURNS bool LANGUAGE SQL AS
$$
SELECT $1 = $2::bool;
$$;
CREATE OR REPLACE FUNCTION comp_bool(int, bool) RETURNS bool LANGUAGE SQL AS
$$
SELECT $1::bool = $2;
$$;
CREATE OPERATOR = (
procedure = comp_bool,
leftarg = bool,
rightarg = int,
commutator = =
);
CREATE OPERATOR = (
procedure = comp_bool,
leftarg = int,
rightarg = bool,
commutator = =
);
然後
SELECT true = 1;
作品.....
看樣子你是一個比較布爾與一個整數。演員陣容不是隱含的,所以你必須明確地施放它。 – wildplasser
是oracle使用0或1,但postgresql真/假 它的posible容易遷移這個東西? –
這取決於。它是代碼嗎?只有幾個疑問?許多疑問?你可以編輯和添加一個expicit強制。或者在導入時更改數據類型,稍後可能會更改它。或者使用UDF來完成此操作(但仍然可以編輯)或者:向pg-source添加默認強制(可能不可能,並且非常困難,不適用於模糊 - 心臟;類型系統是健壯的,但容易打破,恕我直言)BTW:請添加代碼片段... – wildplasser