2012-10-09 82 views
1

使用SQL * Plus我試圖使用select union語句到兩列的結果來自同一個表像這樣的組合:列別名被截斷

select substr(startdate,4,3) milestone 
    from projects 
union 
select substr(enddate,4,3) milestone 
    from projects 

使用別名milestone的列,但由於某些原因,結果顯示列名稱爲mil。它由於某種原因被截斷,我認爲substr部分是問題,因爲它從stardateenddate列中抓取了3個字符。我應該如何解決這個問題?

+0

所以。爲了測試你的理論,你是否將3更改爲不同的值並檢查結果?否則,是否需要調整您正在使用的數據庫查看器的列的大小? – DaveRlz

+2

這聽起來像你正在描述顯示問題。你用什麼工具來顯示結果?在SQL * Plus?或者是其他東西? SQL語言無法告訴您的前端有多少字符用於顯示列名稱。 –

+0

是的,我已經將4改爲1,並且它有所不同。即時通訊使用oracle sql plus – user974047

回答

4

這是因爲您正在使用sql-plus。如果我在我的數據庫GUI(PL/SQL開發人員)中運行相同的查詢,它工作正常,但在sqlplus中,它只是截斷列標題以適合數據。

我在sqlplus中沒有大師,但這個修復該問題:

SQL> column milestone format a20; 
SQL> select substr(sysdate,4,3) milestone from dual; 

結果:

MILESTONE 
-------------------- 
OCT 
0

這是否幫助 -

SQL> set linesize 100 
SQL> column milestone format a25 
SQL> select substr(startdate,4,3) "milestone" 
    from projects 
union 
select substr(enddate,4,3) "milestone" 
    from projects; 
+0

這不會改變SQL * Plus顯示結果的方式。無論是在列標題中使用大寫還是小寫字符,它都會發生變化。 –

+0

@JustinCave讓我在編輯整個答案之間。 – Annjawn

3

你很可能需要設置列寬。

COLUMN MILESTONE FORMAT A20 
SET VERIFY ON 
SET HEADING ON 
SET PAGES 25 
SET LINES 60 

select substr(startdate,4,3) milestone 
    from projects 
union 
select substr(enddate,4,3) milestone 
    from projects