2011-05-23 152 views
3

我需要將varchar轉換爲float。 (該varchar保證是一個數字)Oracle - 將Varchar轉換爲Float並指定精度

我試圖在預建表的頂部創建一個物化視圖。因此,所有數據類型必須完全匹配......包括數據類型的精度和大小。原始列(在添加NVL之前)是從FLOAT數據類型以126的精度拉取的。當我嘗試將varchar轉換爲精度爲126的浮點數時,它似乎不包含126數據精度。我通過創建一個標準視圖來測試它不包含126數據大小,下面的查詢將其轉換爲float(126)。通過我的Toad IDE,我可以看到「ThisorThat 「浮柱是38)。

我只是更新我的物化視圖,象這樣一個NVL聲明...

Select Cast(NVL(thisFloat, thatFloat) as Float(126)) as ThisorThat 
.... 
From tables; 

我得到的錯誤「ORA-12060:預先建立的表的形狀不符合定義查詢」,因爲尺寸不同於我「預先構建」的原始表格。我需要以某種方式將varchar轉換爲顯式大小爲126的浮動。任何想法?

版本:Oracle 10g的

編輯: 這裏有一個link這基本上是我遇到同樣的事情。

回答

2

使用

TO_BINARY_FLOAT(mynumberstring) 

TO_BINARY_DOUBLE(mynumberstring) 

是你要實際做什麼不打石膏,這是一個轉換。

+0

奇數,考慮到函數名稱是「Cast」-_- – contactmatt 2011-05-24 03:10:38

+0

不幸的是,這對我不起作用,因爲結果數據類型是「BINARY_FLOAT」。我需要轉換爲「FLOAT」(126精度) – contactmatt 2011-05-25 14:57:08