ora-01722 在两个视图的减号运算符上使用 count(1) 的无效数字
ora-01722 invalid number using count(1) on minus operator of two views
我遇到错误 ora-01722:无效数字。试过 to_char,转换函数,没有任何帮助。我有以下 SQL,其中 PERSON_DOCS 和 PERSON_DOCS_NEW 是视图,字段 DOCTYPENAME 是使用视图内的子选择计算的,类型为 varchar2(70),并且是两个视图中的所有行都为 null。
select count(1) from
(select DOCTYPENAME
from PERSON_DOCS
minus
select DOCTYPENAME
from PERSON_DOCS_NEW)
当前观看次数相同:
CREATE OR REPLACE VIEW PERSON_DOCS AS
select
...,
(select lr.ll_remark
from table1 ln,
table2 lv,
table3 lr
where ln.short_name = 'DOC.TYPE'
and ln.table_no = lv.table_no
and lv.table_no = lr.table_no
and lv.vetting_table = c.doc_type) as DOCTYPENAME,
...
from table0 c
尝试了 to_char,在视图内的子选择上转换函数,没有帮助。
Table3 DDL语句,取值来源:
CREATE TABLE table3
(TABLE_NO VARCHAR2(35 BYTE),
LL_REMARK VARCHAR2(70 BYTE)
) ;
CREATE TABLE table1
(TABLE_NO VARCHAR2(35 BYTE),
SHORT_NAME VARCHAR2(15 BYTE)
);
CREATE TABLE table2
(TABLE_NO VARCHAR2(35 BYTE),
VETTING_TABLE VARCHAR2(35 BYTE),
APPLICATION VARCHAR2(40 BYTE)
);
CREATE TABLE table0
(CUSTOMER_CODE VARCHAR2(10 BYTE),
DOC_TYPE NUMBER
);
您的查询中某处存在隐式类型转换。只需使用查询的 explain plan
,在谓词部分或 projection
中,您将看到类似 to_number(..)
或 internal_function()
.
的内容
我遇到错误 ora-01722:无效数字。试过 to_char,转换函数,没有任何帮助。我有以下 SQL,其中 PERSON_DOCS 和 PERSON_DOCS_NEW 是视图,字段 DOCTYPENAME 是使用视图内的子选择计算的,类型为 varchar2(70),并且是两个视图中的所有行都为 null。
select count(1) from
(select DOCTYPENAME
from PERSON_DOCS
minus
select DOCTYPENAME
from PERSON_DOCS_NEW)
当前观看次数相同:
CREATE OR REPLACE VIEW PERSON_DOCS AS
select
...,
(select lr.ll_remark
from table1 ln,
table2 lv,
table3 lr
where ln.short_name = 'DOC.TYPE'
and ln.table_no = lv.table_no
and lv.table_no = lr.table_no
and lv.vetting_table = c.doc_type) as DOCTYPENAME,
...
from table0 c
尝试了 to_char,在视图内的子选择上转换函数,没有帮助。
Table3 DDL语句,取值来源:
CREATE TABLE table3
(TABLE_NO VARCHAR2(35 BYTE),
LL_REMARK VARCHAR2(70 BYTE)
) ;
CREATE TABLE table1
(TABLE_NO VARCHAR2(35 BYTE),
SHORT_NAME VARCHAR2(15 BYTE)
);
CREATE TABLE table2
(TABLE_NO VARCHAR2(35 BYTE),
VETTING_TABLE VARCHAR2(35 BYTE),
APPLICATION VARCHAR2(40 BYTE)
);
CREATE TABLE table0
(CUSTOMER_CODE VARCHAR2(10 BYTE),
DOC_TYPE NUMBER
);
您的查询中某处存在隐式类型转换。只需使用查询的 explain plan
,在谓词部分或 projection
中,您将看到类似 to_number(..)
或 internal_function()
.