2011-03-17 209 views
1

我試圖將以下語句從SQL Server轉換爲Oracle,但我嘗試過的所有內容都給了我不同的錯誤。有誰知道如何將其轉換爲oracle友好?如果浮子,它需要將SQL Server轉換爲Oracle

select 
    nullif(cast(cast(round(vn02.wheelbase,0,1)-1 as integer) as varchar) + ',' + 
     cast(cast(round(vn02.wheelbase,0,1) as integer) as varchar) + ',' + 
     cast(cast(round(vn02.wheelbase,0,1)+1 as integer) as varchar),'-1,0,1') wheelbase 
from vn02_fullsv vn02 

軸距被附加到與自身逗號分隔符,看它是否等於「-1,0,1」並且如果是這樣,那麼它應該返回null。

感謝您的幫助。

+0

除非該列被聲明爲BINARY_DOUBLE或BINARY_FLOAT,否則它實際上不是一個本地浮點數,而是一個十進制數。 – 2011-03-17 23:36:51

回答

1

這應該是接近你正在尋找:

select (decode(round(vn02.wheelbase,0)-1||','||round(vn02.wheelbase,0)||','||round(vn02.wheelbase,0)+1, '-1,0,1', null,vn02.wheelbase) 
from vn02_fullsv vn02; 

的 '||'替換+來連接字符串,解碼替換nullif。 圓形作品與您的示例相同。

以下是鏈接供參考Decode,這裏是Round的參考。

+0

感謝您的迴應。我試了一下,我得到一個錯誤,說太多的函數參數,它是指圓函數。所以我改變了,現在我只是得到了「無效號碼」錯誤。有任何想法嗎?這裏是新的陳述: select decode((round(vn02.wheelbase)-1 ||','|| round(vn02.wheelbase)||','|| round(vn02.wheelbase)+1),' -1,0,1',null,vn02.wheelbase) from vn02_fullsv vn02; – pwnerer 2011-03-17 17:31:45

+0

@pwnerer抱歉,我現在修好了。這應該工作。基本上圓的作品,告訴它圓到小數點。所以這個輪到最接近的整數。我看到的唯一問題是如果你說1.6會返回2.不確定這是否會成爲你的問題,這取決於你擁有的數據。 – 2011-03-17 17:38:36

+0

謝謝jschoen。我仍然收到無效數字錯誤,但原因是需要完成一堆鑄造。我用工作更新了SQL。謝謝你的幫助! – pwnerer 2011-03-17 18:36:05