2016-09-24 25 views
1

正如我在問題的標題所提到的,字符d & f被忽略(?)在Oracle where condition爲什麼字符d&f忽略oracle數字字段在哪裏條件?

下面的查詢運行沒有任何錯誤

select employee_id from employees where employee_id > 106f 

但是,如果我106 ORA-00933: SQL command not properly ended錯誤後指定比df其他將拋出,因爲employee_id是數據類型Number

爲什麼這個奇怪的行爲?即以它發生對數後僅單個字母,如果我指定106df它引發錯誤(這是正確的)

回答

2

根據Oracle docsdf是數值常量允許後綴,表示64位(d雙)和32位(浮點型)二進制浮點類型。在你的情況下,類型沒有什麼區別(它可能只是爲了比較而轉換回整數,並且沒有精度損失,因爲106足夠小,可以完全表示爲浮點),所以它看起來沒有任何正在發生。其他字母和106df,都不允許使用該語法。 (e是允許的,但只有後面跟一個數字。)

+0

謝謝霍布斯,很好理解! –