SQLPLUS删除\ r \ n \ n为卷轴吨
题
是否有任何的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
收到预期的效果?
不隶属于 StackOverflow