oracle 10g,查询格式

oracle 10g,查询格式,oracle,oracle10g,Oracle,Oracle10g,我有点怀疑。我有以下疑问 SELECT empno || '|' || ename || '|' || sal || '|' || comm FROM (SELECT empno, ename, sal, comm FROM emp); 结果如下: 7611|Grp

我有点怀疑。我有以下疑问

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


但是上面的查询返回的数据是.11、.22、.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
通信列定义为
编号(7,2)


谢谢

使用带有。似乎您需要
LTRIM(TO_CHAR(comm,'99990.99'))
此处。

LTRIM(TO_CHAR(comm,'99990.99')适用于小数点后有两位数字的值。
如果上面使用了0.123523这样的值,它将小数点四舍五入,只保留2位。

@Benoit:只是好奇-如何快速获取到正确oracle版本文档的链接?谷歌总是引用9、10、11、11.1,而不是最新的11.2。有什么秘密吗?;-)@虫族:我不知道,但我是用
来的!oracle
bang syntax。你好,贝诺伊特,谢谢你的回复,但是当我添加LTRIM(到_CHAR(comm,'99990.99'))时,它也给了我10.00,我需要这个数字,它应该是10。另外,你能解释一下为什么在“999999 0”中保留0吗?@user767334-如果你读过Benoit链接到的文档,您会明白,0是用来为小于1的十进制数提供前导零的。@user767334-至于想要
10
,而不是
10.00
,这根本没有意义。所有数字都应该以相同的格式显示,在这种情况下,这意味着将整数显示为两位小数。“我需要精确的值,因为它在COMM列中”:在COMM列中,它只是一个数字,而不是用于显示的格式。你为什么要这样做?更具可读性的
从emp中选择empno | | | | | | | | | | | | | | | | | | | | | | | | | | | comm?换句话说,为什么要使用子查询?