oracle - oracle SQLPlus varchar2输出空白

  显示原文与译文双语对照的内容

当我像下面这样查询表时,列"姓名"的输出太长。 我最近将数据类型改为 VARCHAR2(150) 而不是 VARCHAR(150),不保存空格。 但是,输出似乎包含( 一些) 空白。 谁能知道这里发生了什么? 我在这里看到空白,或者问题只是我的终端/控制台,或者,本身有什么关系? 使用 Windows 终端。


SQL> SELECT * FROM SYS.O1_Orders;



 ID


----------


NAME


--------------------------------------------------------------------------------



 QUANTITY PRICE


---------- ----------


 1


Cakes


 25 200



时间: 原作者:

varchar2 存储时没有空白填充,但 varchar 也没有,并且也不会与SQL*Plus显示它的方式有任何差别。

SQL*Plus显示具有最大宽度的列,在检索实际结果集之前,它从查询元数据获取该列。 否则,它必须获取所有值,保存在某个位置,找到最长值的长度,然后开始生成输出。 输出会随着不同的执行而变化,这对于报告来说可以能不是有用的。

你有几个选择。 如果知道值永远超过一定长度( 在这种情况下,为什么列 GREATER的最大大小大于),则可以将它的转换为 that,或者告诉SQL*Plus使用与 column 命令使用


column name format a20



在文档文档中的格式更多。 但是,如果它们确实发生了,则更长的值将被包装。

你还可以将所有输出放在一行中,你没有明确询问,但会使事情看起来更整洁:

 
set linesize 200



 

。或者有足够宽的value你所有的专栏。 你可以把这两种设置结合起来。 单行仍然可以在终端窗口内包装,所以如果需要,可以使它的更宽。

原作者:
...