关于Oracle数据库格式列的一个简单问题

Posted

技术标签:

【中文标题】关于Oracle数据库格式列的一个简单问题【英文标题】:A simple question about Oracle database format column 【发布时间】:2020-10-10 03:34:00 【问题描述】:

在 Oracle 上,为了使用 sqlplus 将输出设置得更好,我们这样做了

column author format a15
column editor format a15
column title format a15...

问题很简单:为 3 列设置列大小很容易,但如果我们有 7 列或更多列呢?是否可以为所有列设置默认列大小?

【问题讨论】:

【参考方案1】:

嗯,这是可能的 - 对于数字。您有 3 个可用选项:

COLUMN FORMAT 优先于 SET NUMFORMAT 优先于 SET NUMWIDTH

例如:

SQL> set numwidth 2
SQL> select sal from emp where rownum <= 2;

SAL
---
 ##
 ##

SQL> set numformat $9990d0
SQL> select sal from emp where rownum <= 2;

     SAL
--------
 $1000,0
 $1600,0

SQL> col sal format $999g990d00
SQL> select sal from emp where rownum <= 2;

         SAL
------------
   $1.000,00
   $1.600,00

SQL>

不过,其他数据类型就没有这样的运气了。

【讨论】:

【参考方案2】:

没有。默认情况下,字符串列的显示长度是数据库中列的大小。因此,如果将列定义为例如varchar2(100),则 SQL*Plus 在结果集中保留 100 个字符。特定规则适用于日期、CLOB 或其他数据类型,但这可能不是您在这里要求的。

如果你想改变它,它需要在每列的基础上完成。

来自the documentation:

数据类型列的默认宽度是数据库中列的宽度。

您可以更改数据类型或 DATE 的显示宽度,方法是使用带有格式模型的 COLUMN 命令,该格式模型由字母 A(用于字母数字)后跟一个表示列宽的数字(以字符表示)。

COLUMN 命令中,确定要格式化的列和要使用的模型。

【讨论】:

以上是关于关于Oracle数据库格式列的一个简单问题的主要内容,如果未能解决你的问题,请参考以下文章

ORACLE和MYSQL的简单区别

oracle中控制文件和数据字典的区别

关于 Oracle 11G 中的 Inventory 目录,哪两个是正确的?

未能加载文件或程序集“Oracle.DataAccess”或它的某一个依赖项。试图加载格式不正确的程序。

Oracal数据库安装配置教程

关于oracle中的数字类型