這個問題在這里已經有了答案: 十進制的 NLS_NUMERIC_CHARACTERS 設定 (4 個答案) 昨天關門。
我有數字123.45,但在葡萄牙語中,這實際上是 Oracle 當前在我們的環境中使用的語言環境,這個數字是123,45,所以當我嘗試運行時
SELECT TO_NUMBER('123.45') FROM DUAL;
我收到 ORA-06512 錯誤。
將點替換為逗號不是一個選項,因為除了看起來是一個 hacky 解決方案之外,oracle 驅動程式還會考慮我的 java 應用程式語言環境并將其傳遞給 Oracle 資料庫會話。
無論如何在此函式中將點和逗號都視為小數分隔符?
uj5u.com熱心網友回復:
使用D作為 的第二個引數傳遞的格式模型TO_NUMBER來表示會話當前十進制字符:
哪個,如果你在美國/英國/等。那么你可以使用:
SELECT TO_NUMBER('123.45', '999D99') FROM DUAL;
在葡萄牙/德國/等地。
SELECT TO_NUMBER('123,45', '999D99') FROM DUAL;
如果您想始終使用,則在格式模型中.顯式使用:.
SELECT TO_NUMBER('123.45', '999.99') FROM DUAL;
或者指定NLS_NUMERIC_CHARACTERS要用作TO_NUMBER函式的第三個引數的設定:
SELECT TO_NUMBER('123.45', '999D99', 'NLS_NUMERIC_CHARACTERS=''.,''') AS value FROM DUAL;
db<>在這里擺弄
uj5u.com熱心網友回復:
您可以根據您的資料庫版本嘗試REFEXP、REPLACE 函式。有概念是替代品。,并希望這會有所幫助。
https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions130.htm
https://www.techonthenet.com/oracle/functions/regexp_replace.php
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/478836.html
標籤:甲骨文
