sqlplus удалить \ r \ n \ t из спула - PullRequest
3 голосов
/ 09 июня 2010

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

Мы использовали set trim on в прошлом, но, похоже, сейчас не то, что нам нужно.Я пытаюсь избежать вызова функций oracle translate, 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

update

Что ж, мы закончили тем, что сделали что-то вроде этого.: Нам нужно запустить это в oracle 8, а regexp_replace, похоже, недоступен.: (

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

Ответы [ 2 ]

3 голосов
/ 09 июня 2010

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

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

РЕДАКТИРОВАТЬ DCookie: Поскольку я пропустил первоначальный запрос ОП на решение, не основанное на ПЕРЕВОДЕ / ЧР (я сосредоточился на жалобе ОП на то, что они застряли с 8i), по справедливости для dpbradley я собираюсь отозвать свой ответ и включить его как часть этого один, так как это было четко учтено. Вот что я написал:

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

SELECT TRANSLATE(L,'A'||CHR(10)||CHR(9)||CHR(13),'A') FROM test;
0 голосов
/ 09 июня 2010

Не пытаясь,

SET TAB OFF

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

...