2011-05-24 121 views
2

我有個小疑問。我有以下查詢oracle 10g,查詢格式

SELECT empno 
     || '|' 
     || ename 
     || '|' 
     || sal 
     || '|' 
     || comm 
FROM (SELECT empno, 
       ename, 
       sal, 
       comm 
     FROM emp); 

輸出來爲:

7611|Grp Fract|2001|.11 
7499|ALLEN WOR|1600|.22 
7521|WARD|1250|10.23 
7566|JONES|2975|234.23 
7654|MARTIN|1250|.98 

最後一列COMM具有價值爲0.11,0.22,0.98

,但上面的查詢返回的數據爲0.11, 0.22,0.98。任何人都可以幫助我理解爲什麼當我連接數據以及如何解決這個問題時,我需要確切的值,因爲它在COMM列中。

的O/P應儘可能

7611|Grp Fract|2001|0.11 
7499|ALLEN WOR|1600|0.22 
7521|WARD|1250|10.23 
7566|JONES|2975|234.23 
7654|MARTIN|1250|0.98 

THS COMM列被定義爲number(7,2)

感謝

+5

「我需要確切的值,因爲它是在COMM列」:在COMM列中它只是一個數字,它沒有格式化顯示。 – 2011-05-24 08:27:03

+4

你爲什麼要這麼做?更可讀的'SELECT empno ||有什麼問題? '|' || ename || '|' || sal || '|' || comm FROM emp;'? 換句話說,爲什麼子查詢? – paxdiablo 2011-05-24 08:29:24

回答

7

使用TO_CHAR功能與proper format model。看來你想要LTRIM(TO_CHAR(comm,'999990.99'))這裏。

+0

@Benoit:只是好奇 - 如何快速鏈接到適當的oracle版本文檔? Google總是指9,10,11,11.1,而不是最新的11.2。有什麼祕密嗎? ;-) – zerkms 2011-05-24 08:14:25

+0

@zerkms:我不知道,但是我用'!oracle' bang語法使用了[Duckduckgo](http://ddg.gg)。 – Benoit 2011-05-24 08:16:13

+0

@Benoit:有什麼要求? – zerkms 2011-05-24 08:18:01

0

LTRIM(TO_CHAR(comm,'999990.99'))適用於小數點後有2位數的值。 如果上面使用的值如0.123523,則它只能保留2位數的小數位。