ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 换行符和回车符

换行符和回车符

原创 Linux操作系统 作者:lnwxzyp 时间:2013-07-09 09:36:13 0 删除 编辑
      前两天地市一个人问我怎么spool导出来的数据加上一个空行,大概想了一下,就是加换行符之类的,google搜索了一下 得到以下结果:
【chr(10)】->【\r】->【回车
【chr(13)】->【\n】->换行
windows的结束符是\n\r
unix、linux等系统的结束符是\n
windows的换行符
通过实验发现让自己迷惑不解的地方,先来看看试验,保存为test.log,然后用notepad++打开如下

SQL> spool d:\test.log
SQL> select deptno||' '||dname||' '||LOC||chr(10) from dept;

DEPTNO||''||DNAME||''||LOC||CHR(10)                                             
----------------------------------------------------------------------          
10 ACCOUNTING NEW YORK                                                          
20 RESEARCH DALLAS                                                              
30 SALES CHICAGO                                                                
40 OPERATIONS BOSTON                                                            

SQL> select deptno||' '||dname||' '||LOC||chr(13) from dept;

DEPTNO||''||DNAME||''||LOC||CHR(13)                                             
----------------------------------------------------------------------          
10 ACCOUNTING NEW YORK
                                                         
20 RESEARCH DALLAS
                                                             
30 SALES CHICAGO
                                                               
40 OPERATIONS BOSTON
                                                           

SQL> select deptno||' '||dname||' '||LOC||chr(13)||chr(13) from dept;

DEPTNO||''||DNAME||''||LOC||CHR(13)||CHR(13)                                    
-----------------------------------------------------------------------         
10 ACCOUNTING NEW YORK

                                                        
20 RESEARCH DALLAS

                                                            
30 SALES CHICAGO

                                                              
40 OPERATIONS BOSTON

                                                          

SQL> select deptno||' '||dname||' '||LOC||chr(10)||chr(10) from dept;

DEPTNO||''||DNAME||''||LOC||CHR(10)||CHR(10)                                    
-----------------------------------------------------------------------         
10 ACCOUNTING NEW YORK                                                          
                                                                                
                                                                                
20 RESEARCH DALLAS                                                              
                                                                                
                                                                                
30 SALES CHICAGO                                                                
                                                                                
                                                                                
40 OPERATIONS BOSTON                                                            
                                                                                

DEPTNO||''||DNAME||''||LOC||CHR(10)||CHR(10)                                    
-----------------------------------------------------------------------         
                                                                                

SQL> select deptno||' '||dname||' '||LOC||chr(13)||chr(10) from dept;

DEPTNO||''||DNAME||''||LOC||CHR(13)||CHR(10)                                    
-----------------------------------------------------------------------         
10 ACCOUNTING NEW YORK                                                          
20 RESEARCH DALLAS                                                              
30 SALES CHICAGO                                                                
40 OPERATIONS BOSTON                                                            

SQL> select deptno||' '||dname||' '||LOC||chr(10)||chr(13) from dept;

DEPTNO||''||DNAME||''||LOC||CHR(10)||CHR(13)                                    
-----------------------------------------------------------------------         
10 ACCOUNTING NEW YORK                                                          

                                                                               
                                                                                
20 RESEARCH DALLAS                                                              

                                                                               
                                                                                
30 SALES CHICAGO                                                                

                                                                               
                                                                                
40 OPERATIONS BOSTON                                                            

                                                                               

DEPTNO||''||DNAME||''||LOC||CHR(10)||CHR(13)                                    
-----------------------------------------------------------------------         
                                                                                

SQL> spool off;

结论:
1.select deptno||' '||dname||' '||LOC||chr(10) from dept;
没有空行

2.select deptno||' '||dname||' '||LOC||chr(13) from dept;
有一个空行

3.select deptno||' '||dname||' '||LOC||chr(10)||chr(10) from dept;
两个空行

4.select deptno||' '||dname||' '||LOC||chr(13)||chr(13) from dept;
两个空行

5.select deptno||' '||dname||' '||LOC||chr(13)||chr(10) from dept;
三个空行

6.select deptno||' '||dname||' '||LOC||chr(10)||chr(13) from dept;
没有空行

如果使用系统自带的notepad打开的话
1.select deptno||' '||dname||' '||LOC||chr(10) from dept;
没有空行

2.select deptno||' '||dname||' '||LOC||chr(13) from dept;
没有空行

3.select deptno||' '||dname||' '||LOC||chr(10)||chr(10) from dept;
 两个空行

4.select deptno||' '||dname||' '||LOC||chr(13)||chr(13) from dept;
没有空行

5.select deptno||' '||dname||' '||LOC||chr(13)||chr(10) from dept;
没有空行

6.select deptno||' '||dname||' '||LOC||chr(10)||chr(13) from dept;
 两个空行

但是用问题就出来了,为什么会出现这种差异呢?
windows创建的文件是 \r\n作为一行的结尾, 而unix,linux,mac这种unix类系统是\n作为一行结尾的 \n就是换行符 \r就是回车符,但奇怪的是,如果按照windows的换行符标准,chr(13)chr(10)是\n\r结束,但是空行是两行,而不是理论上的一行。实际上在不同的客户端工具上执行出来也都略有差异。
看下面这个脚本的输出:
--格式化输出
SELECT 'BEGIN' || chr(13) ||'DBMS_STATS.GATHER_TABLE_STATS(OWNNAME => ''STATTEST'',' || chr(13) ||chr(10) || 
chr(9) || chr(9) || chr(9) || chr(9) || chr(9) || chr(9) ||
chr(9) || chr(9) || chr(9) || chr(9) || chr(9) || chr(9) || chr(9) ||chr(9) || chr(9) || 'TABNAME => ''' || TABLE_NAME ||''','|| chr(13) ||chr(10) || chr(9) || chr(9) || chr(9) || chr(9) || chr(9) || chr(9) ||
chr(9) || chr(9) || chr(9) || chr(9) || chr(9) || chr(9) || chr(9) ||chr(9) || chr(9) || 'ESTIMATE_PERCENT => 50,'|| chr(13) ||chr(10) || chr(9) || chr(9) || chr(9) || chr(9) || chr(9) || chr(9) ||chr(9) || 
chr(9) || chr(9) || chr(9) || chr(9) || chr(9) || chr(9) ||chr(9) || chr(9) || 'METHOD_OPT => ''FOR ALL INDEXED COLUMNS'','|| chr(13) ||chr(10) || chr(9) || chr(9) || chr(9) || chr(9) || chr(9) || chr(9) ||
chr(9) || chr(9) || chr(9) || chr(9) || chr(9) || chr(9) || chr(9) ||chr(9) || chr(9) || 'DEGREE => 4,'|| chr(13) ||chr(10) || chr(9) || chr(9) || chr(9) || chr(9) || chr(9) || chr(9) ||chr(9) || chr(9) || 
chr(9) || chr(9) || chr(9) || chr(9) || chr(9) ||chr(9) || chr(9) || 'CASCADE => TRUE);'||chr(13)||chr(10)||'END;'||chr(13)||chr(10)||'/'FROM TABS;

--示例:
BEGIN
DBMS_STATS.GATHER_TABLE_STATS(OWNNAME => 'STATTEST', 
                             TABNAME => 'BONUS',
                             ESTIMATE_PERCENT => 50,
                             METHOD_OPT => 'FOR ALL INDEXED COLUMNS',
                             DEGREE => 4,
                             CASCADE => TRUE);
END;
/




来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12216142/viewspace-765896/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 列转行一则
请登录后发表评论 登录
全部评论

注册时间:2008-04-25

  • 博文量
    129
  • 访问量
    674155