2013-12-16 83 views
1

換行符中的SQLDeveloper運行,這提示在結果的空單元格什麼是Oracle

select regexp_replace(chr(10) || chr(13), '\n', 'New Line') 
from dual 

我原以爲這是'_New Line''New Line_'而是我得到'__'(請注意,強調視覺的空的空間)。

這也不起作用。

select regexp_replace(
    UNISTR('\000A') 
    || UNISTR('\000D') 
    , '\n', 'New Line') 
from dual 

具體而言,我需要這個工作在Java。有一種方法會調用一個存儲過程,該存儲過程返回可能有換行符的列的遊標。從Java端我需要這個工作:

String or = resultset.getString("some_column"); // null check left for simplicity  
... = or.split("\\n"); 
... = or.split("\\r?\\n"); 

我是REGEXP_REPLACE測試,因爲它應該這樣做。

+0

你是什麼意思,在Java中工作?你從Java運行這個查詢,或者你將有一個你傳遞的固定字符串查詢,或者你會從Java端提供替換?您需要提供更多的執行環境,例如一些Java代碼示例和預期的結果... –

+0

@AlexPoole相應編輯,謝謝您的關注。 – Roger

+0

從Oracle返回的新行字符與Java中的新行字符相同; 'chr(10)'和'\ n'是同一件事,它們就是這兩種語言如何表示那個角色。所以......你用'split'做的事情應該是有效的。 –

回答

0

您已經使用換行符,這是chr(10)

select regexp_replace('<'||chr(10) || chr(13)||'>', chr(10), 'New Line') 
from dual; 

要更換換行符,而應使用chr(13)。您可以使用正常的replace()來代替。

SQL Fiddle加上尖括號可以更清楚地顯示輸出。