2011-05-24 114 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位数的小数位。