【问题标题】:Sqlplus formatting width, as specifiedSqlplus 格式化宽度,指定
【发布时间】:2017-06-18 01:52:37
【问题描述】:

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

SELECT table_name, user_cons_columns.column_name
FROM user_cons_columns;

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

这是我希望看到的格式:

尝试的解决方案:

设置多头 1000

设置线条大小 200

其中 long 和 linesize 已从 20 更改为 2000,但未成功。我怀疑这只是不正确的 SQL 代码......但不确定。提前谢谢!

【问题讨论】:

    标签: sql oracle sqlplus


    【解决方案1】:

    这与 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 中使用别名。这些都与您的原始问题无关。

    【讨论】:

    • 完美运行 :D 为您进行后续阐述 - 这两个命令调整所有名称的格式,还是仅调整这个特定的保留字 table_name?但是,是的,为列名添加前缀只是帮助我,作为一个新手,理解我的查询。
    【解决方案2】:

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

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

    【讨论】:

    • 这是一个非常糟糕的建议。格式问题应在报告层解决 - 如果 OP 使用 SQL Plus,请使用 SQL Plus 格式命令,不要更改 SQL 查询中的数据。
    猜你喜欢
    • 2012-05-13
    • 2011-10-15
    • 2012-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-01
    • 1970-01-01
    相关资源
    最近更新 更多