2

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

select substr(startdate,4,3) milestone 
  from projects 
union 
select substr(enddate,4,3) milestone 
  from projects

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

4

3 回答 3

4

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

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

SQL> column milestone format a20;
SQL> select substr(sysdate,4,3) milestone from dual;

结果是:

MILESTONE
--------------------
OCT
于 2012-10-09T15:00:28.400 回答
3

您很可能需要设置列宽。

COLUMN MILESTONE FORMAT A20
SET VERIFY ON
SET HEADING ON
SET PAGES 25
SET LINES 60

select substr(startdate,4,3) milestone 
  from projects 
union 
select substr(enddate,4,3) milestone 
  from projects
于 2012-10-09T14:59:58.923 回答
0

这有帮助吗?

SQL> set linesize 100
SQL> column milestone format a25
SQL> select substr(startdate,4,3) "milestone"
  from projects 
union 
select substr(enddate,4,3) "milestone" 
  from projects;
于 2012-10-09T14:59:43.710 回答