例如,当执行一个长语句来显示不同的列时,问题之一是
select g.guestid, g.forename, g.surname, b.bookingid,
b.arrivedate, b.departdate, br.floorno, br.roomno from...
Linux终端上的列大小似乎是一个问题。例如,当执行上面的语句时,Forename VarChar(80)列占据了屏幕的大部分宽度,一种减少它的方法是通过:
SET COLUMN FORENAME FORMAT A10
例如。然而,许多列将需要重复地通过这是相当长的。即
SET COLUMN FORENAME FORMAT A10
SET COLUMN SURNAME FORMAT A10
等等
有没有一种方法可以根据文本宽度调整列宽,以便每个都很好地适应。而不是这样
我更喜欢一些不涉及使用函数的解决方案。
7条答案
按热度按时间shstlldc1#
不,没有简单的方法可以让SQL*Plus“自动调整”列宽为文本宽度。
但是,脚本可以使您的生活更轻松。
首先,减少打字。不要执行
SET COLUMN FORENAME FORMAT A10
,而是执行类似@c forename 10
的操作。或者像这样快速隐藏宽列:
这些只是我每天使用的许多脚本中的两个。这种方法需要花费时间和一些个人的注意力来定制,以适应它并使其有效,但大大减少了按键的数量。
第二个是glogin.sql。它是一个脚本,每次连接到某个地方时都会执行。我假设您知道一个“长”列列表,这些列可以使您的行换行。
把它们列在那里,然后你的
列参数将在每次连接(重新连接)时设置。
nwo49xxi2#
Tom Kyte编写了一个print_table procedure,它以垂直方式显示结果集。
例如:
这个过程非常有用,尤其是当结果集很小时,理想情况下不超过10行。
t2a7ltrp3#
ansiconsole
SQL格式可能就是您要找的。或者:
此格式根据查询结果的大小自动调整列的大小。
bpsygsoo4#
正如其他用户已经指出的那样,sqlplus没有简单的解决方案。也许使用
glogin.sql
或login.sql
文件会有帮助(@René Nyffenegger提供了一个article about those files)。您可以将列定义放在这些文件中。如果您总是查询相同的查询,或者如果您对列有一致的命名,这可能会有所帮助。或者将列语句放入由
如果你想使用列格式。您将脚本放在
SQLPATH
variable的一部分目录中,以便可以从任何目录调用它。或者你使用其他工具。一位用户已经指出了SQLcl。
velaa5lx5#
从语句中删除
set
:COLUMN FORENAME FORMAT A10
SET COLUMN SURNAME FORMAT A10
oyjwcjzk6#
我的解决方法是使用CSV:
根据数据和你有多少列,这可能会给予你一个可读的输出。
否则,只需将结果粘贴到Excel或Visidata中。
zpjtge227#
会话在运行查询之前不知道要返回的字符串的最大长度。当然,列的大小应该适当,但也许您真的会得到一个80个字符长的名字列表--如果不是,那么您的数据类型长度太大了。
正如Eric所说,GUI工具更好,Oracle的SQL Developer是免费的,也很好。