flowerspring


DECODE는 일반적인 프로그래밍 언어의 IF문을 SQL 문자 또는 PL/SQL안으로 끌여들여 사용하기 위하여 만들어진 오라클함수이다. 따라서 일반 프로그래밍 언어의 IF문이 수행할 수 있는 기능을 포함하고 있다. select시의 decode 사용은 from 절만 빼고 어디에서나 사용할수 있다.
단. 비교 연산은 '='만 가능하다.


문법

DECODE(expr, search, result
       [, search, result ]...
       [, default ]      )

형식은 다음과 같이 사용하시면 됩니다.

DECODE(deptname, 'A', 1, 0)

-> deptname이 'A'와 같으면 1을 갖고 아니면 0을 갖게 됩니다.

또는 SUM함수로 합계를 내줄 수 있습니다.

SUM(DECODE(deptname, 'A', 1, 0)

-> deptname이 'A'와 같으면, 1을 누적하고,아니면 0을 갖게 됩니다.

2중 DECODE문도 허용됩니다. 다음을 보도록 하겠습니다.

DECODE(deptname, 'A', DECODE(name, 'KIM', 1), 0)

-> deptname이 'A'와 같고, name이 'KIM'이면, 1을 같고, 아니면, 0을 갖는다.

2중 DECODE문을 쓸때 두개의 DECODE문은 AND연산으로 수행됨을 명심하길 바랍니다.

기타 DECODE문과 오라클내에서 쓸 수 있는 여러가지 함수를 혼용해서 쓸수 있습니다.
예를들면, 문자열을 잘라주는 SUBSTR함수라든가, 위에서 사용한 SUM함수 등을 혼용해서 쓸 수 있습니다.
이렇게 원하는 sql문을 구사하기 위해서는 많은 실습과 경험과 그리고, 시행착오가 필요합니다.
DECODE문을 사용해서 조건에 맞는 항목에 대한 연산도 가능합니다.

다음을 보도록 하겠습니다.

문제) 사원테이블(PA06MR0)에서 영문성이 'KIM'으로 시작하는 사람과 'LEE'로 시작하는 사람의 합을 구하라. 단 입사년도 가 올해(1998)인 사람의 합을 구하라.

SELECT EMPNAME,
    SUM(DECODE(SUBSTR(EMPNAME,1,3),'KIM',1,0) 
    + DECODE(SUBSTR(EMPNAME,1,3),'LEE',1,0)),
FROM PA06MR0
WHERE SUBSTR(entondate, 1, 4) = '1998';
GROUP BY EMPNAME;


MS-SQL의 경우 CASE문과 같다.

CASE A
    WHEN 'apple' THEN 1  
    WHEN 'banana' THEN 0
    WHEN 'potato' THEN 2
END

 

'DEVELOPMENT > Database' 카테고리의 다른 글

oracle 시작과 종료  (0) 2009.05.07
Toad 단축키  (0) 2009.04.18
[oracle] decode 함수  (1) 2009.01.16
[ORACLE] 테이블 관련 정보 쿼리  (0) 2008.07.26
[MS-SQL] SELECT INTO  (0) 2008.05.20
[oracle] 오라클 중복제거 하면서 전체 값 가져오기  (0) 2008.03.27

Comment +1

토요일에 할일 없이 회사에 출근했다가 이러저리 돌아다니다가 좋은 사이트가 있어서 포스팅 한번 합니다.

HTML 소스를 정렬해주는 사이트입니다.
탭 들여쓰기,  자동 들여쓰기, 자동 줄바꿈 등 여러가지가 지원이 됩니다.
드림위버로 코딩이 된 소스를 보면 줄바꿈이라던가 소스 관리가 엉망인데 이 사이트에서 한번 정렬 하신후에 사용하시면 개발하기가 참 편할꺼 같네요.

URL : http://www.mycoolform.com/

'DEVELOPMENT > Javascript' 카테고리의 다른 글

[javascript] select box  (0) 2009.02.16
[HTML] 제어 문자  (0) 2009.01.16
[HTML 팁] HTML 소스 정렬 사이트  (0) 2008.12.27
[tip] 영문 alert 메세지  (0) 2008.09.25
javascript 디버거 툴  (0) 2008.08.18
클립보드 복사  (0) 2008.08.18

Comment +0

자바스크립트 디버거 툴
내일 당장 사용해보자~
사용자 삽입 이미지

'DEVELOPMENT > Javascript' 카테고리의 다른 글

[HTML 팁] HTML 소스 정렬 사이트  (0) 2008.12.27
[tip] 영문 alert 메세지  (0) 2008.09.25
javascript 디버거 툴  (0) 2008.08.18
클립보드 복사  (0) 2008.08.18
[javascript] dday 구하는 스크립트  (0) 2008.02.04
[javascript] 쿠키 설정, 추출, 삭제 예제  (0) 2008.01.21

Comment +0

익스플로어에서만 가능한 클립보드 복사하기다.

<script language="javascript">
    function setClipBoard(content){
        content +=  content + " [diem 블로그]";
        window.clipboardData.setData('Text', content);
        alert('내용이 복사되었습니다.');
    }
</script>

<a href="javascript:setClipBoard('http://hmjkor.tistory.com/')">복사하기</a>

'DEVELOPMENT > Javascript' 카테고리의 다른 글

[HTML 팁] HTML 소스 정렬 사이트  (0) 2008.12.27
[tip] 영문 alert 메세지  (0) 2008.09.25
javascript 디버거 툴  (0) 2008.08.18
클립보드 복사  (0) 2008.08.18
[javascript] dday 구하는 스크립트  (0) 2008.02.04
[javascript] 쿠키 설정, 추출, 삭제 예제  (0) 2008.01.21

Comment +0

테이블 관련 정보를 알아볼수 있는 쿼리를 정리했다.
나름 유용하게 사용할수 있을꺼 같다.

# 해당 테이블스페이스에 관련된 모든 테이블을 가져온다.
SELECT * FROM TABS

# 해당 테이블스페이스에 관련된 모든 시퀀스를 가져온다.
SELECT * FROM SEQ

# 해당 테이블스페이스에 관련된 모든 뷰의 정보를 가져온다.
SELECT * FROM USER_VIEWS

# 해당 테이블에 컬럼리스트를 가져온다.
SELECT *
FROM USER_TAB_COLUMNS
WHERE TABLE_NAME = 테이블명
ORDER BY COLUMN_ID ASC

# 해당 테이블스페이스에 관련된 모든 트리거를 가져온단.
SELECT * FROM USER_TRIGGERS

# 해당 테이블에 관련된 제약 정보들을 가져온다.
SELECT  C.TABLE_NAME A1,
        SUBSTR(A.COLUMN_NAME,1,15) A2,
        DECODE(B.CONSTRAINT_TYPE, 'P','PRIMARY KEY',
                                  'U','UNIQUE KEY',
                                  'C','CHECK OR NOT NULL',
                                  'R','FOREIGN KEY') A3,
        A.CONSTRAINT_NAME   A4      
FROM    USER_CONS_COLUMNS  A,  USER_CONSTRAINTS  B, USER_INDEXES C
WHERE   A.TABLE_NAME = B.TABLE_NAME
AND     A.TABLE_NAME = C.TABLE_NAME
AND     A.CONSTRAINT_NAME = B.CONSTRAINT_NAME
AND     A.TABLE_NAME =UPPER('테이블명')

ORDER BY 1,2;

'DEVELOPMENT > Database' 카테고리의 다른 글

oracle 시작과 종료  (0) 2009.05.07
Toad 단축키  (0) 2009.04.18
[oracle] decode 함수  (1) 2009.01.16
[ORACLE] 테이블 관련 정보 쿼리  (0) 2008.07.26
[MS-SQL] SELECT INTO  (0) 2008.05.20
[oracle] 오라클 중복제거 하면서 전체 값 가져오기  (0) 2008.03.27

Comment +0

MD5 관련 함수

Comment +0

놈놈놈

일상/영화2008.07.20 03:21
사용자 삽입 이미지

놈!놈!놈
2008-07-19
송강호. 정우성. 이병헌
세 남자의 보물지도 쟁탈전
각각 배우들의 색깔이 정말 잘 나타난 영화
총알이 떨어지지 않고 주인공은 절대 총을 맞지 않는 서부 영화
아무생각 없이 정말 재밌게 볼수 있는 영화다.
예쁘고 섹시한 그녀와 함께~
이렇게 얘기해주면 참 좋아한다

'일상 > 영화' 카테고리의 다른 글

애자  (0) 2009.09.18
국가대표  (0) 2009.09.18
놈놈놈  (1) 2008.07.20
훌라걸스  (0) 2008.07.18

Comment +1

훌라걸스

일상/영화2008.07.18 13:05
사용자 삽입 이미지
사용자 삽입 이미지

훌라걸스
2008-07-18
PSP로 출퇴근 시간에 보면서 눈물이 주루룩 흘러버린 영화
아오이 유우에 매력에 빠져버리기도..
이런 영화에 난 너무 약해


'일상 > 영화' 카테고리의 다른 글

애자  (0) 2009.09.18
국가대표  (0) 2009.09.18
놈놈놈  (1) 2008.07.20
훌라걸스  (0) 2008.07.18

Comment +0


엑셀에서 워드 작업을 할 때 주로 사용하는 단축키라고 한다.
간단하면서도 유용한듯 꼭 한번 사용해보자~

F2 - 바로 셀에 글쓰기
F4 - 방금전에 한 행동 다른 오브젝트에 그대로 다시 하기
F12 - 다른이름으로 저장  
ALT + ENTER - 셀안에서 줄바꾸기
CTRLl + 1 -  서식창 열기
CTRL + PAGEUP / PAGEDOWN  -  쉬트간 텝이동
Alt-E-S - 선택 붙여넣기

'낙서장' 카테고리의 다른 글

주말 저녁  (0) 2009.09.18
무한도전 춘향전 캐릭터  (0) 2009.05.17
윈도우7 작업표시줄 빠른실행 아이콘 되살리기  (0) 2009.05.12
바쁨  (0) 2009.01.30
[Excel] 기본적이고 유용한 단축키  (0) 2008.07.04
JAVA 정석  (0) 2008.04.11

Comment +0

3주 동안 고인물로 지내다가 다시 새로운 물을 가득 넣기로 마음 굳게 먹었다.
요즘 별다르게 배운게 없고 공부한게 없었는데 이게 다 모 사이트 운영때문이다.. 결국은 핑계다 ㅡ,.-^

운영업무를 하다보면 고객의 요청에 의해서 각종 데이터들을 산출해야 한다.
회원정보라던지 매출액등 월말, 분기별로 아주 바쁘게 데이터를 뽑아서 엑셀로 이쁘게 포장해서
고객에게 주면 참 좋아 하신다..^^;

그런데 이런 데이터들을 산출하다 보면 SELECT 된 값들을 다른 테이블에 그 데이터만을 담아서 사용하고 싶은 경우가 있다. 그 중에 또 다른 값을 가져오거나  그 값들로 인해서 또 다른 테이블과 조인을 한다던가 해야 하는 일 말이다.  이런 테이블을 만들지 않으면 쿼리도 늘어나고 속도도 느려지니 헷갈리고 속도도 느려진다.

그래서 이 때  사용할수 있는게 SELECT INTO 이다.
SELECT INTO는 현재 있는 테이블에 있는 내용 전체나 일부를 가져와서 새로운 테이블로 만들 때 사용한다.
기존에 있던 테이블에는 INSERT 시킬수가 없다. 기존 테이블에 INSERT를 시킬려면 SELECT INSERT를 사용하면 된다.

사용법
SELECT * FROM tableName
SELECT * INTO  temp_tableName(새로만들 테이블) FROM tableName

위에 사용법으로 테이블을 만들게 되면 영구적으로 테이블이 생기게 된다.
물론 DROP 명령으로 지워주면 되긴 하지만 잠시만 쓰고 지울 것이라면 굳이 영구 테이블을 만들지 않고 임시테이블을 만들어 사용하면 된다.

임시 테이블은 전역임시 테이블, 세션 임시 테이블 두개로 나뉜다.

만드는방법 사용할 수 있는 범위 삭제되는 시기
일반 테이블 CREATE TABLE 다른 세션에서도 DROP TABLE
세션 임시 테이블
#tablename
해당 세션에서만
세션이 끊어질 때
전역 임시 테이블
##tablename
다른 세션에서도
세션이 끊어질 때
tempdb의 일반 테이블
CREATE TABLE
다른 세션에서도
SQL 서버가 시작 될 때

사용법
SELECT * INTO #tablename FROM table
SELECT * INTO ##tablename FROM table
SELECT * FROM #tablename
SELECT * FROM ##tablename

이렇게 생성 된 테이블은 해당 데이터베이스에 생성되는 것이 아니라 tempdb에 만들어 지며 logout 할 때 자동으로 삭제가 된다.

실무에서는 많이 사용하는지는 모르지만 개인적으로는 정말 많이 사용한다.

참고::
오라클에서는 사용법이 다르다.

CREATE TABLE tableName_temp
AS SELECT * FROM tableName


'DEVELOPMENT > Database' 카테고리의 다른 글

oracle 시작과 종료  (0) 2009.05.07
Toad 단축키  (0) 2009.04.18
[oracle] decode 함수  (1) 2009.01.16
[ORACLE] 테이블 관련 정보 쿼리  (0) 2008.07.26
[MS-SQL] SELECT INTO  (0) 2008.05.20
[oracle] 오라클 중복제거 하면서 전체 값 가져오기  (0) 2008.03.27

Comment +0