我正在Oracle客户端中运行下面提到的查询,
ORA-01722:无效编号
错误。我知道问题是由于TAG_VALUE列的类型为“varchar2
“,我正在将其转换为数字,然后在where子句中使用该字段。我尝试使用“CAST
“函数,但也没有帮助。如果我运行查询时忽略代码为WHERE (P.TAG_VALUE > '100')
的最后一个where条件,则我将获得结果,但包括最后一个where子句将导致错误。
SELECT DISTINCT
count(P.CREATED_DATETIME)
FROM
(
select OUTPUT_TAG_ID,TO_NUMBER(TAG_VAL,'9999.99') AS
TAG_VALUE,TAG_VAL_TS,CREATED_DATETIME
from OV80STG.PRCSD_DATA_OUTPUT_ARCHIVE
where MODEL_CODE='MDLADV1538'
AND TAG_VAL <> 'U_Transfer_rate'
) P
WHERE
(P.TAG_VALUE > '100')
如有任何建议,我们将不胜感激。谢谢。
3条答案
按热度按时间qkf9rpyu1#
删除
where
中值周围的单引号,当它是整数时,您不需要它们。查询将如下所示:liwlm1x92#
TO_NUMBER
函数返回一个数字值,因此,如注解中所述,不应将其与字符串值进行比较。n3ipq98p3#
我通过在子查询中包含外部
where
子句解决了这个问题,然后我得到了所需的结果,没有任何错误。