列别名被截断

use*_*047 2 sql oracle sqlplus

使用 SQL*Plus 我尝试使用 select union 语句来组合同一表中两列的结果,如下所示:

select substr(startdate,4,3) milestone 
  from projects 
union 
select substr(enddate,4,3) milestone 
  from projects
Run Code Online (Sandbox Code Playgroud)

使用列的别名milestone,但由于某种原因,结果显示为列名称mil。由于某种原因它被截断了,我认为这substr部分是问题所在,因为它从stardateandenddate列中获取了 3 个字符。我应该如何解决这个问题?

Dav*_*Rlz 5

这是因为你使用的是sql-plus。如果我在数据库 GUI(PL/SQL 开发人员)中运行相同的查询,它可以正常工作,但在 sqlplus 中,它只是截断列标题以适合数据。

我不是 sqlplus 的专家,但这解决了问题:

SQL> column milestone format a20;
SQL> select substr(sysdate,4,3) milestone from dual;
Run Code Online (Sandbox Code Playgroud)

结果是:

MILESTONE
--------------------
OCT
Run Code Online (Sandbox Code Playgroud)