프로그래밍/DB
[펌]DECODE를 이용하여 원치 않는 자료를 없애는 방법
galad
2008. 1. 9. 17:43
다음과 같은 자료를 갖는 TABLE을 가정해보자.
Employee Name Employee Address City State ZIP
------------- ---------------- ----------- ----- ---------
Donald Duck 101 Cool Pond Bedford OR 12345
Bugs Bunny 540 Carrot Way Atlanta GA 29292
Elmer Fudd
Taz Devil 999 Wildwoods Nashville TN 99999
REPORT를 생성할 때에는 종종 CITY와 STATE를 COMMA(,)로 연결하여 출력하곤
한다.
이때 다음과 같이 COLUMN 간에 CONCATENATING를 이용하면 가능하다.
select employee_name,
employee_address,
city || `, ` || state || ` ` || zip city_state_zip
from decode_sample;
위의 문장은 다음과 같은 결과를 갖는다.
EMplOYEE_NAME EMplOYEE_ADDRESS CITY_STATE_ZIP
-------------------- -------------------- ------------------------
Donald Duck 101 Cool Pond Bedford, OR 12345
Bugs Bunny 540 Carrot Way Atlanta, GA 29292
Elmer Fudd ,
Taz Devil 999 Wildwoods Nashville, TN 99999
위와 같은 경우에서 주소의 자료가 없는 경우 필요없는 COMMA만 출력되게 된다.
이런 경우에 DECODE문을 이용하여 다음과 같이 처리하면 깔끔한 OUTPUT을
받을 수 있게 된다.
select employee_name,
employee_address,
city || decode(`, ` || state,`, `,``,`, ` || state) || ` `
|| zip city_state_zip
from decode_sample;
EMplOYEE_NAME EMplOYEE_ADDRESS CITY_STATE_ZIP
-------------------- -------------------- ------------------------
Donald Duck 101 Cool Pond Bedford, OR 12345
Bugs Bunny 540 Carrot Way Atlanta, GA 29292
Elmer Fudd
Taz Devil 999 Wildwoods Nashville, TN 99999
Employee Name Employee Address City State ZIP
------------- ---------------- ----------- ----- ---------
Donald Duck 101 Cool Pond Bedford OR 12345
Bugs Bunny 540 Carrot Way Atlanta GA 29292
Elmer Fudd
Taz Devil 999 Wildwoods Nashville TN 99999
REPORT를 생성할 때에는 종종 CITY와 STATE를 COMMA(,)로 연결하여 출력하곤
한다.
이때 다음과 같이 COLUMN 간에 CONCATENATING를 이용하면 가능하다.
select employee_name,
employee_address,
city || `, ` || state || ` ` || zip city_state_zip
from decode_sample;
위의 문장은 다음과 같은 결과를 갖는다.
EMplOYEE_NAME EMplOYEE_ADDRESS CITY_STATE_ZIP
-------------------- -------------------- ------------------------
Donald Duck 101 Cool Pond Bedford, OR 12345
Bugs Bunny 540 Carrot Way Atlanta, GA 29292
Elmer Fudd ,
Taz Devil 999 Wildwoods Nashville, TN 99999
위와 같은 경우에서 주소의 자료가 없는 경우 필요없는 COMMA만 출력되게 된다.
이런 경우에 DECODE문을 이용하여 다음과 같이 처리하면 깔끔한 OUTPUT을
받을 수 있게 된다.
select employee_name,
employee_address,
city || decode(`, ` || state,`, `,``,`, ` || state) || ` `
|| zip city_state_zip
from decode_sample;
EMplOYEE_NAME EMplOYEE_ADDRESS CITY_STATE_ZIP
-------------------- -------------------- ------------------------
Donald Duck 101 Cool Pond Bedford, OR 12345
Bugs Bunny 540 Carrot Way Atlanta, GA 29292
Elmer Fudd
Taz Devil 999 Wildwoods Nashville, TN 99999