sqlplus从假脱机中删除\ r \ n \ t

时间:2010-06-09 14:06:32

标签: oracle sqlplus trim oracle8i

是否有任何sql * plus命令从结果集中移除假脱机文件中的\r \n\t?也就是说,“修剪”每条记录?

我们过去曾使用set trim on,但它似乎并不是我们现在所需要的。我试图避免在sql查询中调用oracle的translate,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似乎不可用。 :(

提前致谢。

2 个答案:

答案 0 :(得分:3)

我认为您无法使用SQL Plus指令执行此操作。 SQL Plus是一个非常瘦的客户端,并不是设计用于触摸结果集本身的数据。

如果您不想使用内置的SQL函数来修改输出,那么我认为您对后续处理假脱机文件感到困惑。

DCookie的编辑: 由于我错过了OP对基于非TRANSLATE / CHR的解决方案的原始请求(我专注于OP的哀叹,他们被8i困住),为了公平对待dpbradley我将撤回我的答案并将其作为此部分包含在内一,因为它被明确考虑。这是我写的:

  

您可以尝试针对Oracle 8情况使用TRANSLATE函数:

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

答案 1 :(得分:0)

不试试,

SET TAB OFF

有预期的效果吗?