错误ORA-01722:创建物化视图时编号无效(Oracle SDE问题?)

错误ORA-01722:创建物化视图时编号无效(Oracle SDE问题?),oracle,materialized-views,ora-01722,Oracle,Materialized Views,Ora 01722,我想从涉及空间表(基于SDE)和oracle非空间表的查询中创建一个物化视图。仅执行查询是可行的,但只要我想创建物化视图(或表),就会出现错误“ORA-01722:无效数字” 我在=的两侧都尝试了不同的强制转换方法,如_number()、强制转换(x为数字(x,x))、强制转换(x为数字(x,x))、强制转换(x为int),也仅在左侧。原因是=的左侧(TEST\u IND\u TABLE\u BASIS.IND\u VALUE)是varchar2类型。这由数据模型给出 下面的简化示例有效。我的假

我想从涉及空间表(基于SDE)和oracle非空间表的查询中创建一个物化视图。仅执行查询是可行的,但只要我想创建物化视图(或表),就会出现错误“ORA-01722:无效数字”

我在
=
的两侧都尝试了不同的强制转换方法,如_number()、强制转换(x为数字(x,x))、强制转换(x为数字(x,x))、强制转换(x为int),也仅在左侧。原因是
=
的左侧(
TEST\u IND\u TABLE\u BASIS.IND\u VALUE
)是varchar2类型。这由数据模型给出

下面的简化示例有效。我的假设是SDE导致了麻烦?你能在我的代码中发现另一个可能的问题吗

这里是我的问题的简化(工作)版本。在原始代码中,表TEST\u IND\u table\u BASIS是一个空间(SDE)表


您的数字分隔符错误 试试这个:

CREATE MATERIALIZED VIEW MV_TEST AS
SELECT   TEST_IND_TABLE_BASIS.ID
        ,CASE WHEN
             to_number(replace(TEST_IND_TABLE_BASIS.IND_VALUE, '.',',')) >= (SELECT THRSHLD FROM TEST_IND_THRSHLD WHERE CD = 'INDICATOR_1')
             THEN 0
             ELSE 1
         END AS FLAG
FROM TEST_IND_TABLE_BASIS
更确切地说:

SELECT   TEST_IND_TABLE_BASIS.ID
        ,CASE WHEN
             to_number(TEST_IND_TABLE_BASIS.IND_VALUE, '9999999999D9999', 'NLS_NUMERIC_CHARACTERS='',.''') >= (SELECT THRSHLD FROM TEST_IND_THRSHLD WHERE CD = 'INDICATOR_1')
             THEN 0
             ELSE 1
         END AS FLAG
FROM TEST_IND_TABLE_BASIS
输出:

1   0
2   0
1   0
2   0