Oracle sqlplus 函数显示为###

Oracle sqlplus functions shows as ###

提交 select 查询后,其中包含 row_number() 等函数或任何其他函数,结果为 ####。如果我使用 rownum 作为某种东西,它会显示 ### 如果我只使用 rownum 一切正常。

我在使用其他通用列时遇到了这个问题,但我可以简单地使用列 columnname format 9999;

问题不是不够space,每条记录只有一位

我在整个互联网上进行了谷歌搜索,但还没有找到解决我问题的答案。

有谁知道函数可能有什么问题以及如何格式化它们?

select ROW_NUMBER() OVER (ORDER BY student_surname) "Nr.", 
      student_surname || ' ' || student_name "Student", 
      NVL(sum(m.stipend),0) + NVL(sum(m.compensation),0) "Total" 
from student s 
  inner join money m on m.student_id=s.id_student 
group by student_surname, student_name;

已尝试清除列,但没有用。

您似乎用错误的格式设置了数字列的格式,导致无法显示所有数字。

例如,这是某人的薪水 - 看起来不错:

SQL> select sal from emp where rownum = 1;

       SAL
----------
       920

但是,如果您按如下格式设置它(即说我希望该列只有两位数字 (99)),结果是 ###:

SQL> col sal format 99
SQL> select sal from emp where rownum = 1;

SAL
---
###

SQL>

怎么办?最简单的方法就是clear格式化:

SQL> col sal clear
SQL> select sal from emp where rownum = 1;

       SAL
----------
       920

SQL>

另一种可能是numformat(一般)设置错误;所有这些列都是 NUMBER,并且所有这些列都受此影响 set numformat:

SQL> set numformat 9
SQL> select empno, mgr, sal, deptno from emp where rownum = 1;

     EMPNO        MGR        SAL     DEPTNO
---------- ---------- ---------- ----------
########## ########## ########## ##########

如何解决?退出 SQL*Plus 并重新连接。