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