在 SQL*Plus 中控制行显示长度

Posted

技术标签:

【中文标题】在 SQL*Plus 中控制行显示长度【英文标题】:Controlling line display length in SQL*Plus 【发布时间】:2018-01-02 15:10:10 【问题描述】:

我们如何水平改变“选择”查询的显示列数(按水平顺序)。 sql 输出仅显示水平序列中的 2 列,并将下一列以两列为一组移动到下一行,如下所示:

NAME | EMP.NO
-----------
DEPT | LOC

我希望它在一行中显示为:

NAME |  EMP.NO  | DEPT NO | LOC

【问题讨论】:

首先,告诉我们您是如何(共享 SQL)和 WHERE(Oracle DB 版本和您用于运行 SQL 的程序)这样做的 @thatjeffsmith 使用 oracle 11g,它是对用户定义表的正常选择查询,从命令提示符运行... 好的,但是您使用的是什么程序? SQL*Plus?尝试设置 linesize 80 并再次运行您的查询 - 只是猜测,因为我们不知道您真正在做什么 @thatjeffsmith 是的 Sql*plus How do I format my oracle queries so the columns don't wrap?的可能重复 【参考方案1】:

嗯,可能你正在寻找这个:

create table TestTable (id number, name varchar2(10))

insert into TestTable values (1, 'John')
insert into TestTable values (2, 'Mckensy')
insert into TestTable values (3, 'Valneech')
insert into TestTable values (4, 'Zeebra')

select 'id', LISTAGG(id, ' ') WITHIN GROUP (ORDER BY name)      
from testtable
union 
select 'name', LISTAGG(name, ' ') WITHIN GROUP (ORDER BY name)
from testtable ; 

实际上我不知道您使用的是哪个 Oracle 版本。

您可以使用PIVOT 子句,可能会有所帮助。

希望它有效。

【讨论】:

以上是关于在 SQL*Plus 中控制行显示长度的主要内容,如果未能解决你的问题,请参考以下文章

GetConsoleScreenBufferInfo 获取单个控制台行的长度

html 中字符串的显示的长度(像素)如何判断

限制ansible控制台输出中的行长度

SQL Plus如何仅在同一帐户没有两个不同结果时才显示行

使用 encode_plus 方法时的标记索引序列长度错误

代码行最大长度宜控制在 70 至 80 个字符以内