是否有任何的SQL * Plus命令从回事出来的假脱机文件的结果集删除\r \n and\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函数来修改输出,那么我想你坚持后处理一个假脱机文件。

通过DCookie编辑: 因为我错过了一个非翻译/ CHR基于解决方案的OP的原始请求(我把重点放在了OP的哀叹,他们坚持8I),公平地dpbradley我要收回我的答案,包括它的这一部分一个,因为它清楚地考虑。这是我写的:

  

您可以尝试的翻译功能为Oracle 8的情况:

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

其他提示

没有尝试它,确实

SET TAB OFF

收到预期的效果?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top