SQL*Plus - 数字列显示十六进制字符

标签 sql oracle sqlplus

在 SQL*Plus 中进行数据透视报告,计算状态为“错误”的记录数并在结果中遇到十六进制值。可以使用以下方法在 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

似乎有一个名为 'error' 的列对 SQL*Plus 中的结果做了奇怪的事情,因为这个问题在 SQL 开发人员中不会发生。有人有解释吗?
除了重命名之外,似乎没有解决方法..

最佳答案

看起来像 NUMBER列格式 ERROR默认设置在 SQL*Plus .

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
----------
##########

关于SQL*Plus - 数字列显示十六进制字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31017134/

相关文章:

sql - 使用 GROUP BY 子句时 SELECT DISTINCT 是否总是多余的?

java - Oracle 相当于 java 的 System.nanoTime()

sql - 如何在Oracle中使用SQL删除重复的id

sql - 插入和更新后的 PL SQL 循环表

mysql - 如何连接mysql复选框表A和另一个表B中的复选框结果字段?

c++ - 将模型设置为 QTableWidget

linux - 静默安装后监听器未启动

oracle - sql语法缺失和错误处理

sql - 监控长时间运行的 PL/SQL block

sql - 复制 Azure SQL 数据库并更改规模