[英]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.