콘텐츠로 이동

SELECT 결과 포맷팅

SELECT 결과 포맷팅#

SELECT 문에 대한 결과들을 사용자가 보기 좋게 포맷팅하는 기능이다.

SET LINESIZE#

SELECT 문 결과 출력시 디스플레이되는 한 라인의 사이즈를 설정한다. 10 에서 200 사이의 값이어야 한다.

iSQL> SET LINESIZE 100;   -- 한 라인의 디스플레이 크기를 100으로 설정한다.

SET LOBSIZE#

CLOB 칼럼을 SELECT 문으로 조회 시 디스플레이 되는 데이터의 길이를 설정한다.

CLOB 칼럼의 데이터를 SELECT 문으로 조회하기 위해서 우선 트랜잭션 모드를 AUTOCOMMIT OFF로 설정해야 한다.

CREATE TABLE C1(I1 INTEGER, I2 CLOB);
INSERT INTO C1 VALUES(1, 'A123456789');
INSERT INTO C1 VALUES(2, 'A1234');
INSERT INTO C1 VALUES(3, 'A12345');
INSERT INTO C1 VALUES(4, 'A1234567890123');

iSQL> autocommit off;     -- CLOB 칼럼 조회를 위해 트랜잭션 모드를 OFF로 설정한다.
Set autocommit off success.
iSQL> select * from c1;
C1.I1        C1.I2
---------------------------
1   A123456789
2   A1234
3   A12345
4   A1234567890123
4 rows selected.

iSQL> set lobsize 10;     -- CLOB 칼럼의 데이터를 select 문으로 조회할 때 화면에 나타나는 데이터 길이를 설정한다.
iSQL> select * from c1;
C1.I1       C1.I2
--------------------------
1           A123456789
2           A1234
3           A12345
4           A123456789
4 rows selected.

SET LOBOFFSET#

CLOB 칼럼을 SELECT 문으로 조회할 때 디스플레이 되는 Clob 데이터의 시작 위치를 설정한다.

CLOB 칼럼의 데이터를 SELECT 문으로 조회하기 위해서 우선 트랜잭션 모드를 AUTOCOMMIT OFF로 설정해야 한다.

CREATE TABLE C1(I1 INTEGER, I2 CLOB);
INSERT INTO C1 VALUES(1, 'A123456789');
INSERT INTO C1 VALUES(2, 'A1234');
INSERT INTO C1 VALUES(3, 'A12345');
INSERT INTO C1 VALUES(4, 'A1234567890123');

iSQL> autocommit off;
Set autocommit off success.
iSQL> set loboffset 4;        -- CLOB 칼럼의 데이터를 select 문으로 조회할 때 화면에 나타나는 데이터의 시작 위치를 설정한다.
iSQL> select * from c1;
C1.I1       C1.I2
--------------------------
1           456789
2           4
3           45
4           4567890123
4 rows selected.

SET FEEDBACK#

SELECT 문 결과 출력시 선택된 결과 건수를 출력한다.

SET FEEDBACK ON|OFF|n
  • ON: SELECT문 수행 후 결과 데이터 건수를 출력한다.

  • OFF: SELECT문 수행 후 결과 데이터 건수를 출력하지 않는다.

  • n: 결과 건수가 n이상일 경우에만 출력한다.

iSQL> SET FEEDBACK ON;
iSQL> SELECT * FROM employees WHERE ENO < 3;
ENO         E_LASTNAME  E_FIRSTNAME  EMP_JOB     EMP_TEL     DNO         SALARY      SEX         BIRTH       JOIN_DATE    STATUS      
--------------------------------------------------------------------------------------------------------------------------------------------------
1           Moon        Chan-seung  CEO         0119566236  3002                    M                                    R           
                                                5                                                                                    
2           Davenport   Susan       designer    0113654540              1500        F           721219      18-NOV-2009  H           
2 rows selected.

SET PAGESIZE#

결과 row들을 몇 개 단위로 보여줄 것인지 결정한다.

iSQL> SET PAGESIZE 2;   -- 결과 row를 2개 단위로 보여준다.
iSQL> SELECT * FROM employees;
ENO         E_LASTNAME  E_FIRSTNAME  EMP_JOB     EMP_TEL     DNO         SALARY      SEX         BIRTH       JOIN_DATE    STATUS      
--------------------------------------------------------------------------------------------------------------------------------------------------
1           Moon        Chan-seung  CEO         0119566236  3002                    M                                    R           
                                                5                                                                                    
2           Davenport   Susan       designer    0113654540              1500        F           721219      18-NOV-2009  H           
ENO         E_LASTNAME  E_FIRSTNAME  EMP_JOB     EMP_TEL     DNO         SALARY      SEX         BIRTH       JOIN_DATE    STATUS      
--------------------------------------------------------------------------------------------------------------------------------------------------
3           Kobain      Ken         engineer    0162581369  1001        2000        M           650226      11-JAN-2010  H           
4           Foster      Aaron       PL          0182563984  3001        1800        M           820730                   H           
ENO         E_LASTNAME  E_FIRSTNAME  EMP_JOB     EMP_TEL     DNO         SALARY      SEX         BIRTH       JOIN_DATE    STATUS      
--------------------------------------------------------------------------------------------------------------------------------------------------
5           Ghorbani    Farhad      PL          0114558231  3002        2500        M                       20-DEC-2009  H           
                                                0                                                                                    
6           Momoi       Ryu         programmer  0197853222  1002        1700        M           790822      09-SEP-2010  H 
.
.
.
20 rows selected.

iSQL> SET PAGESIZE 0;   -- 결과 전체를 한 단위로 보여준다.
iSQL> SELECT * FROM employees;
ENO         E_LASTNAME  E_FIRSTNAME  EMP_JOB     EMP_TEL     DNO         SALARY      SEX         BIRTH       JOIN_DATE    STATUS      
--------------------------------------------------------------------------------------------------------------------------------------------------
1           Moon        Chan-seung  CEO         0119566236  3002                    M                                    R           
                                                5                                                                                    
2           Davenport   Susan       designer    0113654540              1500        F           721219      18-NOV-2009  H           
3           Kobain      Ken         engineer    0162581369  1001        2000        M           650226      11-JAN-2010  H
.
.
.
20 rows selected.

SET HEADING#

결과에 헤더를 출력할지 결정한다.

iSQL> SET HEADING OFF;    -- 결과에 헤더를 출력하지 않는다.
iSQL> SELECT * FROM employees;

1           Moon        Chan-seung  CEO         0119566236  3002                    M                                    R           
                                                5                                                                                    
2           Davenport   Susan       designer    0113654540              1500        F           721219      18-NOV-2009  H           
3           Kobain      Ken         engineer    0162581369  1001        2000        M           650226      11-JAN-2010  H 
.
.
.
20 rows selected.

iSQL> SET HEADING ON;    -- 결과에 헤더를 출력한다.
iSQL> SELECT * FROM employee;
ENO         E_LASTNAME  E_FIRSTNAME  EMP_JOB     EMP_TEL     DNO         SALARY      SEX         BIRTH       JOIN_DATE    STATUS      
--------------------------------------------------------------------------------------------------------------------------------------------------
1           Moon        Chan-seung  CEO         0119566236  3002                    M                                    R           
                                                5                                                                                    
2           Davenport   Susan       designer    0113654540              1500        F           721219      18-NOV-2009  H           
3           Kobain      Ken         engineer    0162581369  1001        2000        M           650226      11-JAN-2010  H
.
.
.
20 rows selected.

SET COLSIZE#

SELECT 문 결과 출력시 디스플레이되는 CHAR, VARCHAR 타입 칼럼의 사이즈를 설정하여, 길이가 긴 문자열을 포함하는 칼럼이 존재할 경우 인식을 용이하게 한다.

iSQL> CREATE TABLE LOCATION(
ID      INTEGER,
NAME    CHAR(20),
ADDRESS VARCHAR(500),
PHONE   CHAR(20));
Create success.
iSQL> INSERT INTO LOCATION VALUES(1, 'ALTIBASE', 'Inyoung Bldg, 5fl 44-11 Youido-dong Youngdungpo-qu seoul, 150-890. Korea', '82-2-769-7500');
1 row inserted.

아래는 CHAR 또는 VARCHAR 타입 칼럼의 디스플레이 사이즈를 7로 설정하여 조회하는 예제이다.

iSQL> SET COLSIZE 7;
iSQL> SELECT ID,NAME,ADDRESS,PHONE FROM LOCATION;
ID          NAME     ADDRESS  PHONE    
--------------------------------------------
1           ALTIBAS  10Fl.,   82-2-20  
            E        Daerung  82-1000  
                     post-to           
                     wer II,           
                      Guro-d           
                     ong, Gu           
                     ro-qu,            
                     Seoul 1           
                     52-790.           
                      Korea            
1 row selected.

SET NUM[WIDTH]#

NUMERIC, DECIMAL, NUMBER, FLOAT 타입의 SELECT 결과를 표시할 자리수를 설정한다. 유효숫자의 개수가 많은 데이터는 이 값을 크게 설정하면 읽기 쉽다.

아래는 NUMWIDTH를 30으로 설정한 후 NUMERIC, DECIMAL, NUMBER, FLOAT 칼럼을 조회하는 예제이다.

iSQL> CREATE TABLE t1
(
c_numeric NUMERIC(38, 0),
c_decimal DECIMAL(38, 0),
c_number NUMBER(38, 0),
c_float FLOAT(38)
);
Create success.
iSQL> INSERT INTO t1 VALUES(12345678901234567890, 12345678901234567890, 12345678901234567890, 12345678901234567890);
1 row inserted.
iSQL> SET NUMWIDTH 30
iSQL> SELECT c_numeric, c_decimal, c_number, c_float FROM t1;
C_NUMERIC C_DECIMAL
-----------------------------------------------------------
C_NUMBER C_FLOAT
-----------------------------------------------------------
12345678901234567890 12345678901234567890
12345678901234567890 12345678901234567890
1 row selected.

SET NUMF[ORMAT]#

구문#

SET NUMF[ORMAT] format;

NUMERIC, DECIMAL, NUMBER, FLOAT 타입의 SELECT 결과를 표시할 수 있는 형식을 설정한다. 이 설정은 SET NUMWIDTH 설정보다 우선한다.

format에 설정할 수 있는 형식은 "General Reference> 자료형 > 숫자형 데이터 타입 > 숫자형 데이타 형식"을 참고한다.

아래는 지수 형식으로 조회하는 예제이다.

iSQL> create table t1(i1 float(30));
Create success.
iSQL> insert into t1 values (123456789012);
1 row inserted.
iSQL> SET NUMFORMAT 9.99EEEE
iSQL> select * from t1;
T1.I1
-------------
  1.23E+11
1 rows selected.

CL[EAR] COL[UMNMS]#

COLUMN 명령어로 설정된 모든 칼럼의 표시 형식을 해제한다.

구문#

CL[EAR] COL[UMNS]

COLUMN#

SELECT 대상(target)이 되는 칼럼의 표시 형식을 설정하거나 확인할 수 있다. 아래의 데이터 타입일 경우에만 설정이 적용된다.

  • 문자형 데이터 타입의 길이

  • 숫자형 데이터 타입의 표시 형식

구문#

COL[UMN] [{column | expr} [option]]

column 또는 expr은 SELECT 대상이 되는 칼럼 또는 식을 가리키며, select 문에 사용한 것과 동일하게 기술해야 한다. COL[UMN] [{column | expr}] 명령어만 사용하면 설정한 모든 칼럼 또는 지정한 칼럼에 설정된 형식을 확인할 수 있다.

option에서 설정할 수 있는 기능은 아래와 같다.

옵션 설명
CLE[AR] 지정된 칼럼의 설정을 해제
FOR[MAT] format 칼럼의 표시 형식을 설정한다.
문자형 칼럼: CHAR, VARCHAR 타입의 표시 길이 설정.
format은 A10과 같은 텍스트 상수로 지정할 수 있다.
SET COLSIZE 설정보다 우선한다.
숫자형 칼럼 : NUMBER, DECIMAL, FLOAT, NUMERIC 타입의 표시 형식 설정
format에 설정할 수 있는 형식은 "General Reference> 자료형 > 숫자형 데이터 타입 > 숫자형 데이타 형식"을 참고한다.
SET NUMFORMAT 설정보다 우선한다.
ON|OFF 설정한 표시 형식의 적용 여부
OFF: 칼럼에 대한 설정은 그대로 둔 채, 출력에는 적용하지 않는다.
ON : 설정을 적용한다.

설명#

SELECT 구문의 대상 칼럼에 대한 표시 형식을 설정할 수 있다. 동일한 칼럼을 여러 개의 표시 형식으로 설정하면 마지막 형식이 적용된다.

설정한 표시 형식을 적용하지 않으려면 CLEAR 또는 OFF 옵션을 사용할 수 있다. CLEAR 옵션은 설정을 완전히 해제하는 것이며, OFF는 출력만 적용되지 않는 차이가 있다.

예제#

아래는 VARCHAR(60)의 address 칼럼의 길이를 20으로 표시하려는 예를 보여준다.

iSQL> @schema.sql
iSQL> COLUMN address FORMAT A20
iSQL> select cno, address from customers;
CNO                  ADDRESS
----------------------------------------------
1                    2100 Exposition Boul
                     evard Los Angeles US
                     A
...

설정을 삭제하려면 아래와 같이 실행한다.

iSQL> COLUMN address CLE