【发布时间】:2018-08-20 07:21:59
【问题描述】:
233@REMOTE_DB.RESULT_COUNT 是一个varchar2 字段,大多数是数字。
只有7行数据包含空格或其他字符,
我找到了这 7 行
SELECT * FROM 233@REMOTE_DB WHERE REGEXP_LIKE(RESULT_COUNT, '[^0-9]')
WITH TABLE_233 as (
select *
from 233@REMOTE_DB where
RESULT_COUNT IS NOT NULL
),
NON_NUMERIC_FILTER_233 AS (
select ID, comment, LAST_UPDATED, TO_NUMBER(RESULT_COUNT) AS
RESULT_COUNT_NUM
from TABLE_233 where id NOT IN (
'11',
'22',
'33',
'44',
'55',
'66',
'77'
)
),
NON_NUMERIC_FILTER_233_LARGER_THAN_ONE AS (
select * from NON_NUMERIC_FILTER_233 where RESULT_COUNT_NUM > 0
and lower(comment) in ('s','t','m','n','p','i','p','o','s','u')
)
select a.* from NON_NUMERIC_FILTER_233_LARGER_THAN_ONE a inner join
234@REMOTE_DB r1 on
a.ID = r1.id
返回
ORA-01722: 无效号码
ORA-02063: 来自 [dblink 名称]
的前一行 01722. 00000 - “无效号码”
*原因:指定的号码无效。
*操作:指定一个有效的数字。
WITH TABLE_233 as (
select *
from 233@REMOTE_DB where
RESULT_COUNT IS NOT NULL
),
NON_NUMERIC_FILTER_233 AS (
select ID, comment, LAST_UPDATED, TO_NUMBER(RESULT_COUNT) AS
RESULT_COUNT_NUM
from TABLE_233 where id NOT IN (
'11',
'22',
'33',
'44',
'55',
'66',
'77'
)
),
NON_NUMERIC_FILTER_233_LARGER_THAN_ONE AS (
select * from NON_NUMERIC_FILTER_233 where RESULT_COUNT_NUM > 0
and lower(comment) in ('s','t','m','n','p','i','p','o s','u')
)
select a.* from NON_NUMERIC_FILTER_233_LARGER_THAN_ONE a
成功了
为什么inner join会导致'invalid number'的错误?
【问题讨论】:
-
'inner join 234@REMOTE_DB r1 on' - 对吗?您将表命名为数字,但未引用以允许它
-
233@REMOTE_DB 和 234@REMOTE_DB r1 不是实名
-
233 是你的远程表名吗?
标签: sql oracle join types common-table-expression