簡體   English   中英

無效的數字SQL錯誤

[英]Invalid number SQL error

我有這樣的聲明。 雖然我可以在Oracle 11g中執行此語句並查看結果。 但是我的朋友(他也使用Oracle 11g)無法執行此語句。 他收到無效的號碼錯誤。 我不明白為什么。 你可以幫幫我嗎? 他還嘗試將upper_threshold強制轉換為varchar,但沒有用。

select *
from table
where (lower_threshold <> to_char( 0) or upper_threshold = 0 or upper_threshold is null)

lower_threshold具有varchar類型,上限閾值為整數值。

Oracle嘗試ORA-01722: invalid number當我們嘗試將非數字值轉換為數字數據類型時,數字ORA-01722: invalid number

您說“上限閾值是整數值”,但table.upper_threshold數據類型似乎是字符串數據類型(VARCHAR2或類似的數據),如table.lower_threshold 在這種情況下,執行以下過濾器時:

upper_threshold = 0

Oracle實現的是

to_number(upper_threshold) = 0

您不會收到ORA-01722錯誤,因為表中的所有值都會愉快地轉換為數字。 您的朋友不是很幸運,並且他在upper_threshold列中具有非數字值(空格,字母或其他內容)。

教導是,始終使用NUMBER列存儲數字。


“實際上,我們都連接到相同的數據庫,相同的表”

基本上,如果兩個人針對具有相同數據的相同實際表運行相同的SQL,他們將獲得相同的結果。 因此,你們中的一個必須做的與其他人有所不同。 盡管我無法想到可能導致ORA-01722錯誤的環境參數,但這可能與客戶端設置有關。 更有可能是你們中的一個正在運行不同的語句或使用不同的表,或者(如Mathguy所建議的)對另一個數據集運行。

暫無
暫無

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

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