오라클만 이런지는 모르겠지만

to_char(3, '000') 를 사용하게 될 경우,
출력되는 값은 '003'이 아니라 ' 003'으로 앞자리에 공백이 한개 들어가게 됩니다.

이 공백은 부호를 나타내주기 위한 값으로서 음수 일 경우 '-003'이 되고,
양수일 경우는 공백으로 출력이 됩니다.

공백을 제거 하기 위해선 TRIM을 사용하는 방법도 있지만,
포맷팅에 FM을 추가해주는 방법도 있습니다.

to_char (3, 'FM000') 으로 해주게 되면,
양수일때는 공백이 없이 출력되며, 음수일 경우에는 -가 출력됩니다.

크리에이티브 커먼즈 라이선스
Creative Commons License

Posted by xxeronis

CODE WDATE COUNT
1 100 5
1 101 5
1 102 3
2 101 1
2 102 2
3 104 1
3 105 6
4 101 2
4 102 3



이런 형태의 데이터가 있다고 칩니다.
wdate라는건 아무렇게나 입력했지만, 날짜라고 칩니다.
이런 형태의 데이터를

날짜 / 코드1 / 코드2 / 코드3 / 코드4
100
101
102
 
이런 형태로 데이터를 뽑고 싶을 경우가 있습니다.
이런 경우엔 DECODE 기능을 이용해 형태를 재 정의를 할 수 있습니다.

    select wdate,
    sum(decode (code, 1, count)) as code1,
    sum(decode (code, 2, count)) as code2,
    sum(decode (code, 3, count)) as code3,
    sum(decode (code, 4, count)) as code4
    from test
    group by wdate
    order by wdate;


decode는 삼항연산자와 비슷한 느낌으로 사용하면 됩니다.
code가 1일경우 count는 code1로 보내고 , 2일경우는 code2로 보냅니다.
그리고 group by 를 이용해 월별 합산을 만들 수 있습니다.

결과는 아래와 같습니다.

WDATE CODE1 CODE2 CODE3 CODE4
100 5
101 5 1 2
102 3 2 3
104 1 2
105 6







 

크리에이티브 커먼즈 라이선스
Creative Commons License

Posted by xxeronis


오라클에서 작업할때 데이터와 인덱스는 별도의 테이블 스페이스에 저장한다.

하지만 신규 테이블을 스크립트를 이용해 대량 생성하는 등의 작업을 할때,
인덱스도 같은 테이블에 생성이 되어버리는 경우가 있다.

그럴 경우 DB를 변경해주는 명령은 다음과 같다.

[ alter index 인덱스명 rebuild tablespace 테이블스페이스명 ]

select 'alter index ' || index_name || ' rebuild tablespace table_ix' from user_indexes;


이런식으로 인덱스를 일괄 적용하는것도 가능하다.

크리에이티브 커먼즈 라이선스
Creative Commons License

Posted by xxeronis


쿼리를 짜다 보면 가끔씩 행을 합쳐야 하는 경우가 생긴다.

NAME
------
LEE
PARK
CHOI

위와 같은 결과를
NAME
----
LEEPARKCHOI

라던지

LEE|PARK|CHOI
이런식으로 만들어 활용하고 싶을때가 있다.

현재 프로젝트를 진행하면서도 분류 코드 구분 때문에 이런 기능을 사용해야 했고.
인터넷으로 검색을 하면서 XMLAGG라는 기능을 찾을 수 있었다.

 WITH 
  TABLE AS (
  SELECT 이름 FROM 유저목록
  )
  SELECT 
       LTRIM(SUBSTR(XMLAGG(XMLELEMENT(이름,'|'||이름 )).EXTRACT('//text()').GetStringVal(), 2))   
  FROM TABLE)

크리에이티브 커먼즈 라이선스
Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이선스에 따라 이용하실 수 있습니다.

Posted by xxeronis

영구적으로 YYYY-MM-DD HH:MI:SS 로 변경하는법
ORACLE_HOME\database 의 init<SID>.ora 파일의 아래에

NLS_DATE_FORMAT="YYYY-MM-DD HH:MI:SS"

를 추가해준다.

24시간 형식으로 표시하기 위해선 HH24 라고 해주면 된다.

단 DB를 내렸다가 다시 올려야 한다.

크리에이티브 커먼즈 라이선스
Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이선스에 따라 이용하실 수 있습니다.

Posted by xxeronis
트랙백 0 : 댓글 0

솔라리스 호스트명 변경하기

2009/07/11 20:51


# csh
% uname -S "변경hostname"

크리에이티브 커먼즈 라이선스
Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이선스에 따라 이용하실 수 있습니다.

'ORACLE' 카테고리의 다른 글

오라클 인덱스들 테이블 스페이스 한번에 모두 변경하기  (0) 2010/07/05
오라클 xmlagg를 이용핸 row 합치기  (0) 2010/07/02
오라클 10g sysdate 형식 변경  (0) 2009/09/30
솔라리스 호스트명 변경하기  (0) 2009/07/11

Posted by xxeronis
트랙백 0 : 댓글 0

방특 연락망

2009/07/03 16:42
보호되어 있는 글입니다. 내용을 보시려면 비밀번호를 입력하세요.


◀ PREV : [1] : NEXT ▶

카테고리

분류 전체보기 (158)
獨白 (57)
雜多 (41)
趣味 (18)
旅行 (8)
사용기 (1)
MabiNogi (4)
Study (0)
LINUX (5)
Window 7 (2)
ORACLE (7)
문제해결 (6)

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

태그목록

달력

«   2010/07   »
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

글 보관함