簡體   English   中英

ORA-01722: 無效號碼錯誤

[英]ORA-01722: invalid number error

我在我的 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')

任何建議將不勝感激。 謝謝。

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);

TO_NUMBER函數返回一個數值,因此,如注釋中所述,您不應將其與字符串值進行比較。

我通過在子查詢中包含外部where子句解決了這個問題,然后我得到了所需的結果,沒有任何錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM