2014-01-10 57 views
1

我試圖從開發數據庫的人員開發數據庫的數據庫中定義一列作爲string當列中唯一的數據是科學記數法,因此它應該被定義爲int。當我創建查詢來拉動它的時候,當我在那裏硬編碼值的時候,它會起作用,但是當我嘗試添加一個參數時,它不再起作用。下面是該查詢harcoded:將int轉換爲字符串sql

SELECT EYE_COLOR, HAIR_COLOR, FIRST_NAME, LAST_NAME FROM PERSONS WHERE AGE = 4E3 

下面是該查詢當我添加參數:

SELECT EYE_COLOR, HAIR_COLOR, FIRST_NAME, LAST_NAME FROM PERSONS WHERE AGE = :AGE 

第一個查詢返回的DataTable 24行(因爲它應該),但第二個只回報13排。我的猜測是,因爲當傳遞參數時,該列被定義爲一個字符串,與某個值混淆在一起。我正在使用sqldeveloper和oracle。

+2

在結果集返回的區別是什麼?如果在輸出中包含「年齡」,那麼兩個結果都會返回? – mfdoran

+0

科學記數法不映射到INT。那麼4E-3或1.233E7呢? – OldProgrammer

+0

什麼是您正在使用的年齡的價值?請準確地說文字。 – OldProgrammer

回答

0

也許這將幫助:

SELECT utl_raw.cast_to_binary_integer('4E3') "some_age_huh?" 
    FROM dual; 

SQL> 1251 

SELECT to_char(4.4E3) FROM dual; 

SQL> 400