Sqlplus格式化宽度,指定为

时间:2017-06-17 01:43:08

标签: sql oracle sqlplus

如何执行以下Oracle / pl-sql代码并排显示两列?

SELECT table_name, user_cons_columns.column_name
FROM user_cons_columns;

目前,这是我的输出格式:

enter image description here

这是我希望看到的格式:

enter image description here

尝试解决方案:

设置长1000

设置lineize 200

如果long和linesize已从20更改为2000,则失败。我怀疑它只是不正确的SQL代码......但不确定。提前谢谢!

2 个答案:

答案 0 :(得分:4)

这与SQL代码无关(你不应该改变它,例如通过截断SQL查询中的字符串,只是为了修复格式问题)。

问题是表中的列被声明为某个宽度,比如VARCHAR2(1000),然后是SQL Plus默认保留的内容。您可以使用SQL Plus命令在SQL Plus中更改它。在这种情况下,COLUMN命令。

SQL> column column_name format a30
SQL> column table_name format a30

这些是SQL Plus命令,所以不要以分号结尾(;)

如果您希望每列40个字符,请将a30更改为a40。等

目前尚不清楚为什么,如果在输出中你希望表名首先出现,那么在查询中你首先要有列名。你应该能够自己解决这个问题。此外,如果您只从一个表中进行选择,则无需使用表名为列名添加前缀。但是,如果这样做,请保持一致 - 对两列都这样做。如果这样做,最好在FROM子句中为表提供别名,并在SELECT中使用别名。这些都与您原来的问题无关。

答案 1 :(得分:-1)

仅从column_name字段中选择前N(20)个字符。

SELECT SUBSTR(column_name, 1, 20) column_name, table_name
FROM user_cons_columns;