Вопрос

Есть ли команда SQL * PLUS для удаления \r \n а также\t Из набора результатов, который выходит в файл катушки? То есть «обрезать» каждую запись?

Мы использовали set trim on В прошлом, но это не так, кажется, не в том, что нам нужно прямо сейчас. Я пытаюсь избежать перевода Oracle, функции CHR в запросе SQL.

Например,

set termout off
set spool somefile.dat
set lin  600

select data from mytable;

set spool off;
exit;

Мой запрос возвращает это

|DATA|
|\n \t\t\t\t\t thisistheactualdata \t\t\t\t\t\t\n|

И я хотел бы сохранить это в мошенничестве

thisistheactualdata

Обновить

Ну, мы закончили что-то подобное.

set tab off;
spool /home/oracle/out.dat

set linesize 20
set termout off
set trim on
select regexp_replace(l,'(\t|\n)','') from test;

spool off;
exit;

Но получили несколько плохих новостей: нам нужно запустить это в Oracle 8, и Regexp_replace, похоже, не доступен. :(

Заранее спасибо.

Это было полезно?

Решение

Я не думаю, что вы сможете сделать это с SQLПлюс Директива. SQL.Plus - довольно тонкий клиент и не предназначен, чтобы коснуться данных из результата настроен.

Если вы не хотите использовать встроенные функции SQL, чтобы изменить выходные данные, я думаю, что вы застряли с постобработным файлом на буфер.

Редактировать по DCoodie: поскольку я пропустил оригинальный запрос OP для решения на основе неперевозок / CHR (я сосредоточился на плачете OP, что они застряли с 8i), в справедливости до DPbradley я собираюсь отозвать мой ответ и включить его Как часть этого, так как это было четко рассмотрено. Вот что я писал:

Вы можете попробовать функцию Translate для вашей ситуации Oracle 8:

SELECT TRANSLATE(L,'A'||CHR(10)||CHR(9)||CHR(13),'A') FROM test;

Другие советы

Не пытаясь это, делает

SET TAB OFF

иметь желаемый эффект?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top