3

スプールファイルに出力される結果セットから削除する sql*plus コマンドはあり\r \nますか? \tつまり、すべてのレコードを「トリム」しますか?

過去に使用 set trim onしたことがありますが、現在必要なものはないようです。SQLクエリでオラクルの翻訳、chr関数を呼び出さないようにしています。

例えば、

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 が利用できないようです。:(

前もって感謝します。

4

2 に答える 2

4

SQL*Plusディレクティブを使用してこれを実行できるとは思いません。SQL * Plusは非常にシンクライアントであり、結果セット自体のデータにアクセスするようには設計されていません。

組み込みのSQL関数を使用して出力を変更したくない場合は、スプールファイルの後処理で立ち往生していると思います。

DCookieによる編集:非TRANSLATE / CHRベースのソリューションに対するOPの最初の要求を見逃したので(OPが8iで立ち往生しているという嘆きに焦点を合わせました)、dpbradleyに公平を期して、回答を撤回して含めます。それが明確に考慮されたので、これの一部として。これが私が書いたものです:

Oracle8の状況でTRANSLATE関数を試すことができます。

SELECT TRANSLATE(L,'A'||CHR(10)||CHR(9)||CHR(13),'A') FROM test;
于 2010-06-09T14:50:21.077 に答える
0

試さなくても、

SET TAB OFF

望ましい効果がありますか?

于 2010-06-09T14:18:06.347 に答える