문제

Oracle SQL (SQLDeveloper에서 SQLPLUS 명령에 액세스 할 수 없음)을 사용하여 다음과 같은 모습을 보이는 쿼리를 실행합니다.

select assigner_staff_id as staff_id, active_flag, assign_date,
  complete_date, mod_date
from work where assigner_staff_id = '2096';

결과는 다음과 같이 보입니다.

STAFF_ID               ACTIVE_FLAG ASSIGN_DATE               COMPLETE_DATE             MOD_DATE                  
---------------------- ----------- ------------------------- ------------------------- ------------------------- 
2096                   F           25-SEP-08                 27-SEP-08                 27-SEP-08 02.27.30.642959000 PM 
2096                   F           25-SEP-08                 25-SEP-08                 25-SEP-08 01.41.02.517321000 AM 

2 rows selected

이것은 결과를 멋지게 형식화 된 빠른 텍스트 블록으로 전자 메일 또는 문제 보고서에 붙여 넣으려고 할 때 매우 넓고 다루기 힘든 텍스트 보고서를 생성 할 수 있습니다. 평범한 바닐라 Oracle SQL을 사용할 때 출력 열에 추가 공백이 있습니까? 지금까지 모든 웹 검색 결과가 SQLPlus (없는)의 열과 같은 형식의 명령을 사용하여 수행하는 방법을 보여주기 때문에 모든 웹 검색이 크게 나타나지 않았습니다.

도움이 되었습니까?

해결책

결과를 얻기 위해 무엇을 사용하고 있습니까? 붙여 넣은 출력은 SQL*Plus에서 나오는 것처럼 보입니다. 결과를 생성하는 데 사용하는 도구에는 출력 수정 방법이있을 수 있습니다.

기본적으로 Oracle은 제목의 너비 또는 더 넓은 열 데이터의 너비를 기반으로 열을 출력합니다.

열을 더 작게 만들고 싶다면 기본값을 더 작게 만들기 위해 이름을 바꾸거나 텍스트로 변환하고 텍스트로 변환해야합니다.

select substr(assigner_staff_id, 8) as staff_id, 
      active_flag as Flag, 
      to_char(assign_date, 'DD/MM/YY'),
      to_char(complete_date, 'DD/MM/YY'), 
      mod_date
from work where assigner_staff_id = '2096';

다른 팁

당신의 진술에서, 당신은 당신이 찾고있는 출력 유형을 지정할 수 있습니다.

select /*csv*/ col1, col2 from table;
select /*Delimited*/ col1, col2 from table;

XML, HTML, 텍스트, 로더 등과 같은 다른 형식이 있습니다.

도구> 기본 설정> 데이터베이스> 유틸리티> 내보내기에서 이러한 특정 옵션의 형식을 변경할 수 있습니다.

실행 명령문 대신 실행 스크립트를 선택하십시오.

* 이것은 Oracle SQL 개발자 v3.2를위한 것입니다

SQL로 할 수있는 일은 도구에 의해 제한됩니다. SQL Plus에는 열을 포맷하는 명령이 있지만 사용하기 쉽지는 않습니다.

빠른 접근 방식 중 하나는 출력을 Excel에 붙여 넣고 포맷하거나 스프레드 시트를 연결하는 것입니다. 일부 도구는 출력을 스프레드 시트로 직접 저장합니다.

좋은 질문. 나는 그것에 대해 정말로 생각해야했다.

당신이 할 수있는 한 가지는 가장 좁은 유용한 열만 리턴하도록 SQL을 변경하는 것입니다.

EG (나는 Oracle Syntax에서는별로 뜨겁지는 않지만 비슷한 것이 작동해야합니다) :

select substring( convert(varchar(4), assigner_staff_id), 1, 4 ) as id, 
       active_flag as act, -- use shorter column name

       -- etc. 

from work where assigner_staff_id = '2096';

말이 돼?
UNIX/Linux 에서이 작업을 수행한다면 명령 줄에서 실행하여 AWK 스크립트를 통해 배관하는 것이 좋습니다.

내가 undertonded다면, 당신의 질문을 업데이트하면 또 다른 가질 것입니다 :)

많은 줄이 반환되지 않으면 종종 사용하겠습니다. Tom Kytes print_table 기능.

SQL> set serveroutput on 
SQL> execute print_table('select * from all_objects where rownum < 3');
OWNER                         : SYS
OBJECT_NAME                   : /1005bd30_LnkdConstant
SUBOBJECT_NAME                :
OBJECT_ID                     : 27574
DATA_OBJECT_ID                :
OBJECT_TYPE                   : JAVA CLASS
CREATED                       : 22-may-2008 11:41:13
LAST_DDL_TIME                 : 22-may-2008 11:41:13
TIMESTAMP                     : 2008-05-22:11:41:13
STATUS                        : VALID
TEMPORARY                     : N
GENERATED                     : N
SECONDARY                     : N
-----------------
OWNER                         : SYS
OBJECT_NAME                   : /10076b23_OraCustomDatumClosur
SUBOBJECT_NAME                :
OBJECT_ID                     : 22390
DATA_OBJECT_ID                :
OBJECT_TYPE                   : JAVA CLASS
CREATED                       : 22-may-2008 11:38:34
LAST_DDL_TIME                 : 22-may-2008 11:38:34
TIMESTAMP                     : 2008-05-22:11:38:34
STATUS                        : VALID
TEMPORARY                     : N
GENERATED                     : N
SECONDARY                     : N
-----------------

PL/SQL procedure successfully completed.

SQL> 

많은 행이 있다면 SQL 개발자에서 쿼리를하고 XLS로 저장하면 Businessy 유형은 어떤 이유로 엑셀을 좋아합니다.

"캐스트"기능 만 사용하지 않는 이유는 무엇입니까?

select 
(cast(assigner_staff_id as VARCHAR2(4)) AS STAFF_ID,
(cast(active_flag as VARCHAR2(1))) AS A,
(cast(assign_date as VARCHAR2(10))) AS ASSIGN_DATE,
(cast(COMPLETE_date as VARCHAR2(10))) AS COMPLETE_DATE,
(cast(mod_date as VARCHAR2(10))) AS MOD_DATE
from work where assigner_staff_id = '2096';
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top