[20230807]为什么不对齐.txt

来源:这里教程网 时间:2026-03-03 18:56:48 作者:

[20230807]为什么不对齐.txt SCOTT@test01p> select * from v$version; BANNER                                                                               CON_ID -------------------------------------------------------------------------------- ---------- Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production              0 PL/SQL Release 12.2.0.1.0 - Production                                                    0 CORE    12.2.0.1.0      Production                                                                0 TNS for 64-bit Windows: Version 12.2.0.1.0 - Production                                   0 NLSRTL Version 12.2.0.1.0 - Production                                                    0 --//看到这个输出,一直不明白为什么其中1行不对齐的情况,探究看看。 SCOTT@test01p> column c90 format a90 SCOTT@test01p> select dump(banner,16) c90,banner from v$version where banner like 'CORE%'; C90                                                                                        BANNER ------------------------------------------------------------------------------------------ -------------------------------- Typ=1 Len=26: 43,4f,52,45,9,31,32,2e,32,2e,30,2e,31,2e,30,9,50,72,6f,64,75,63,74,69,6f,6e  CORE 12.2.0.1.0      Production --//可以看出CORE,12.2.0.1.0,Production之间的字符ascii码是0x9.相当于<tab>字符,也就是字符之间使用<tab>连接。 --//不知道为什么会影响到第2个字段的输出位置。 SCOTT@test01p> set COLSEP | SCOTT@test01p> select * from v$version ; BANNER                                                                          |    CON_ID --------------------------------------------------------------------------------|---------- Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production    |         0 PL/SQL Release 12.2.0.1.0 - Production                                          |         0 CORE    12.2.0.1.0      Production                                                      |         0 TNS for 64-bit Windows: Version 12.2.0.1.0 - Production                         |         0 NLSRTL Version 12.2.0.1.0 - Production                                          |         0 --//改写如下: SCOTT@test01p> select replace(banner,chr(9),' '),con_id from v$version ; REPLACE(BANNER,CHR(9),'')                                                            CON_ID -------------------------------------------------------------------------------- ---------- Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production              0 PL/SQL Release 12.2.0.1.0 - Production                                                    0 CORE 12.2.0.1.0 Production                                                                0 TNS for 64-bit Windows: Version 12.2.0.1.0 - Production                                   0 NLSRTL Version 12.2.0.1.0 - Production                                                    0 --//不知道sqlplus能够设置什么参数避免这样的情况出现!!那位知道.就在我无法分析时候我发现 select dump(banner,16) c90,banner from v$version where banner like 'CORE%'; --//输出CORE,12.2.0.1.0之间仅仅占用1个字符.而CORE 12.2.0.1.0之间的空格字符通过vim定位可以发现在列96. --//一般缺省tabstop=8,出现字符的位置(8*N+1) 9,17,25..... CORE    12.2.0.1.0    Production ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 123456789012345678901234567890 --//也就是将这个输出一行当做1个字符串来处理,但是还是无法解析我看到的情况. SYS@test> select '1     2       3' c80 , 0 con_id from dual ; C80                                                                             |    CON_ID --------------------------------------------------------------------------------|---------- 1       2       3                                                                           |         0 SYS@test> select '1     23' c80 , 0 con_id from dual ; C80                                                                             |    CON_ID --------------------------------------------------------------------------------|---------- 1       23                                                                            |         0 SYS@test> select '123   ' c80 , 0 con_id from dual ; C80                                                                             |    CON_ID --------------------------------------------------------------------------------|---------- 123                                                                                 |         0 SYS@test> select '      123' c80 , 0 con_id from dual ; C80                                                                             |    CON_ID --------------------------------------------------------------------------------|----------         123                                                                            |         0 --//没有任何规律可言!!

相关推荐