2010-11-26 82 views
3

當我使用PHP OCI從Oracle數據庫執行提取操作時,小於1的數字顯示爲.XXXXXX,.249999。有沒有辦法將此設置爲0.XXXXXX或任何其他格式,而不修改每個查詢以明確使用to_char()? (?也許通過一些會話參數)PHP OCI,Oracle和默認數字格式

回答

0

沒有辦法做你在全球範圍內要求修改php/oci-extension源代碼的東西。這種行爲的原因是因爲oracle oci在結果中省略了0,並且php根據列數據類型將所有結果從oci轉換爲字符串,而不執行任何轉換。即使SQL * Plus中的結果默認爲0,也必須使用set numformat調用SQL * Plus格式來自定義列格式並預置0。

當前沒有可以設置更改此行爲的alter session參數。

解決此問題的最常見方法是在查詢周圍使用包裝並檢查數字列與is_numeric,然後使用number_formatsprintf格式化數值列值。希望你的應用程序已經使用了股票php oci函數的包裝,所以你可以在一個位置進行更改。

2

使用PHP,你可以輕鬆地添加0,通過轉換爲浮動:

$a = '.249999'; 
echo (float) $a; 

這意味着你可以通過

$row['number'] = (float) $row['number']; 

轉換你的電話號碼獲取之後來自DB。

+0

感謝您的回答,但我正在尋找一種方法在全球範圍內進行更改。我們有很多需要更改的查詢,這會花費太多精力。 – Dario 2010-11-26 11:11:21