2016-12-04 7 views
0

Можно ли написать пользовательскую функцию оракула, который делает следующееНаписать пользовательскую функцию оракула удалить Chr (10) = новая строка & Chr (13) = возврат каретки и дифферента столбец и возвращает значение

remove char(10) 
remove char(13) 
trim 

так что если я написать

выберите custom_function (col1) с tab1 она возвращает значение с помощью перевода строки, возврат каретки и отделан

If possible i also want to replace a long balnk line between two words with single blank. 

где col1 является строкой

Может кто-то пожалуйста, помогите мне в этом

Спасибо много

+0

Можете ли вы дать нам некоторое представление о том, почему вы должны это делать? –

+0

так вместо 'обрезки ( заменить ( заменить (ул , Chr (13), '') , Chr (10), '') ), как col1' вы хотите функцию? – xQbert

ответ

1

Для обрезного вопроса, вы, вероятно, просто нужны rtrim, например:

select rtrim(somecolumn, chr(10)||chr(13)||' ') 
from (select 'Some text 

       ' as somecolumn 
     from dual); 

Для замены несколько пробельных символов, которые вы можете использовать regexp_replace , например:

select regexp_replace(somecolumn, '\s{2,}', ' ') 
from (select 'Some text' as somecolumn 
     from dual); 

Оба вместе :

select regexp_replace(rtrim(somecolumn, chr(10)||chr(13)||' '), '\s{2,}', ' ') 
from (select 'Some text 

       ' as somecolumn 
     from dual);