当我像下面这样查询表时,“NAME”列的输出太长。我最近将数据类型更改为 VARCHAR2(150) 而不是 VARCHAR(150) 以不保存空格。然而,输出似乎无论如何都包含(一些?)空格。谁能澄清这里发生了什么事吗?我是否在这里查看空格,或者问题只是我的终端/控制台,还是 SQLPLUS 本身与它有关?使用 Windows 终端。
SQL> SELECT * FROM SYS.O1_Orders;
ID
----------
NAME
--------------------------------------------------------------------------------
QUANTITY PRICE
---------- ----------
1
Cakes
25 200
最佳答案
这纯粹是 SQL*Plus 显示问题。 (目前) VARCHAR
和 VARCHAR2
数据类型之间没有区别 - 也不会用空格填充您保存的数据。只有 CHAR
列可以做到这一点。
在 SQL*Plus 中,您可以控制 name
列的显示宽度
SQL> column name format a30;
例如,将告诉 SQL*Plus 使用 30 列来显示 name
列中的数据。您可以根据数据的实际长度、想要在单行中容纳多少数据等来向上或向下调整该值。您必须将其与 SQL 语句一起放入脚本中,否则您将在发出语句之前需要在每个 session 中复制它,否则您需要将其添加到 login/glogin.sql 文件中。
如果您尝试生成固定宽度的文本报告,SQL*Plus 是一个可爱的工具。但是,如果您只是以交互方式运行查询,那么它不是最用户友好的解决方案 - 调整文本列的宽度、处理比行长的输出等,很快就会过时。如果您正在进行交互式开发,像 SQL Developer 这样具有适当 GUI 的工具会更加友好。
关于oracle - SQLPlus varchar2 输出空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25619463/