2013-05-13 41 views
1

我有Oracle 10g數據庫headig格式的問題。 我有此代碼oracle列標題干擾到另一列

COLUMN id HEADING "Rodné|číslo" FORMAT A10 
COLUMN name HEADING "Meno" FORMAT A20 
COLUMN surname HEADING "Priezvisko" FORMAT A20 
--some select here 

色譜柱內徑爲CHAR(10)類型,其他列是VARCHAR2(30)的類型。結果是這樣的

Rodné 
číslo Meno   Priezvisko 
---------- -------------------- -------------------- 
7951051548 Bohdana    Filcova 
4054207561 Bohumila    Kmecova 

正如你可以看到標題「美諾」干涉過第一欄和標題「Priezvisko」干涉第二。我不明白爲什麼。我該如何解決這個問題?

回答

1

這似乎是一個字符集問題。 SQL * Plus支持globalisation,因此您使用的其中一個字符可能不在您會話的字符集中。如果我設置我的NLS_LANG:

export NLS_LANG="ENGLISH_UNITED KINGDOM.WE8ISO8859P1" 

Rodné 
číslo Meno   Priezvisko 
---------- -------------------- -------------------- 
7951051548 Bohdana    Filcova 
4054207561 Bohumila    Kmecova 

...然後我得到相同的行爲,你做。 (它稍微修改,但不是由set tab off修復)。如果我更改了會議UTF8然後對齊正確:

export NLS_LANG="ENGLISH_UNITED KINGDOM.UTF8" 

Rodné 
číslo  Meno     Priezvisko 
---------- -------------------- -------------------- 
7951051548 Bohdana    Filcova 
4054207561 Bohumila    Kmecova 

這是在11gR2中,順便說一下,所以它不是一個Oracle 10g的問題;我的數據庫字符集是AL32UTF8。同樣有趣的是,在每次會議中轉儲價值,'選擇轉儲'('Rodné|číslo',1016)from dual';與WE8ISO8859P1:

DUMP('RODNé|číSLO',1016) 
-------------------------------------------------------------------------------- 
Typ=96 Len=20 CharacterSet=AL32UTF8: 52,6f,64,6e,c3,83,c2,a9,7c,c3,84,c2,8d,c3,8 
3,c2,ad,73,6c,6f 

...與UTF8:

DUMP('RODNÉ|ČÍSLO',1016) 
-------------------------------------------------------------------------------- 
Typ=96 Len=14 CharacterSet=AL32UTF8: 52,6f,64,6e,c3,a9,7c,c4,8d,c3,ad,73,6c,6f 

想必與前它認爲輸出佔用更多的空間比實際的,所以它是不填充標題非常正確。

č似乎是問題所在。它是defined in Unicode,但不是在WE8ISO8859P1WE8MSWIN1252(源自here)。在轉儲中顯示的Unicode版本爲c4,8d,而對於非Unicode版本,則從c3,84,c2,8d開始構建。相當多的以及爲什麼導致你看到的效果超出了我對字符集的理解......

+0

謝謝,它的工作原理就像你寫的。 – CoCumis 2013-05-13 15:13:25