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