是否有任何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似乎不可用。 :(
提前致谢。
答案 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
有预期的效果吗?