数字列显示十六进制字符

在SQL * Plus中执行数据透视报表时,计算状态为'ERROR'的记录数并在结果中遇到十六进制值。 它可以在11g上使用以下内容复制:

SQL> select 1 error from dual;

     ERROR
----------
##########

然后我测试了几个品种:

SQL> select 1 errors from dual;

    ERRORS
----------
         1

SQL> select 'a' error from dual;

ERROR
-----------------------------------------------------------------
a

SQL> select 'a' errors from dual;

E
-
a

似乎在SQL * Plus中有一个名为'error'的列会导致您的结果很奇怪,因为这个问题在SQL开发人员中不会发生。 有没有人有解释? 似乎没有解决办法,除了重命名。


看起来SQL*Plus缺省设置了ERROR列的NUMBER格式。

ATTRIBUTE命令显示了这种格式。

SQL> attribute error
COLUMN   ERROR ON
FORMAT   A65
word_wrap 

所以,让我们清楚。

SQL> column error clear

现在,

SQL> select 12 error from dual;

     ERROR
----------
        12

完整脚本:

SQL*Plus: Release 11.2.0.3.0 Production on Wed Jun 24 04:26:15 2015
Copyright (c) 1982, 2011, Oracle.  All rights reserved.

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options

SQL> attribute error
COLUMN   ERROR ON
FORMAT   A65
word_wrap 

SQL> show numwidth
numwidth 10

SQL> select 12 error from dual;

     ERROR
----------
##########

SQL> column error clear

SQL> attribute error
SP2-0046: ATTRIBUTE 'error' not defined

SQL> select 12 error from dual;

     ERROR
----------
        12

SQL> column error format A10

SQL> select 12 error from dual;

     ERROR
----------
##########

这只是一个workarround,但你可以把你的int作为char来转换。

SQL> select cast(1 as char(50)) as error from dual;`

ERROR
---------
1
链接地址: http://www.djcxy.com/p/27217.html

上一篇: numeric column shows hex characters

下一篇: simultaneous download using download.file