본문 바로가기
반응형

TechNical/Oracle47

연산시 NULL 값을 주의하자. 연산시 NULL 값을 주의하자. 더하기 연산은 모르겠다만.. 빼기 연산을 수행 하면 거지 같은 일이 발생한다. NULL - 2 => ?? 결과값이 어떻게 나올까나. 결과도 그냥 값이 없다. -2 가 박힐 거라고 생각하면 오산이다. 이럴때는 NVL 처리를 해서 0을 만들어 줘야 제대로 된 값이 나온다. 대게.. 두개의 테이블을 OUTER로 조인하면 이러한 상황이 발생하지 않을까나~ 이래저래 NULL은 귀찮은 녀석이다. 왠만하면 default 값을 넣어 주는게 좋지 않을까나~ Sample SQL ] SELECT AA + BB FROM (SELECT '' AS AA FROM DUAL) a , (SELECT '-2' AS BB FROM DUAL) b 2008. 11. 19.
쿼리 에디터 툴이 날려먹은 쿼리 복구하기 먼저.. 오라클에 해당하는 내용이다. 쿼리문을 커맨드창이나 메모장에서 작성하기는.... 흠좀무 다.. 그래서 쿼리 에디터 툴을 쓰기 마련이다. 오라클에서 제공하는 SQL Developer나 두꺼비를 쓰던지 귤을 쓰던지 쿼리를 작성을 하게 된다. 그러다가 느닷없이 재앙은 다가온다.. 어플리케이션이 갑자기 죽어 버린다. 저장도 안 했는데... 다행스럽게도 재 시작하면 이전 쿼리를 복구 시켜 준다거나 쿼리 히스토리가 기록되어 있어서 복구 시키면 된다. 하지만.. 때때로 이 놈이 복구가 안 되는 수가 있다. 이럴땐 진짜 의욕상실이다. 해서 에디터 프로그램에서 날려먹은 쿼리를 DB에서 찾아 오는 방법도 알아 둘 필요가 있다고 느꼈다. 어제 그랬으니까 -_- 실행환경은 ORACLE 10g 다. v$sqlarea나 .. 2008. 9. 25.
워우~ 데이터베이스 공부하기 딱 좋은 자료. http://wiki.oracleclub.com/pages/viewpage.action?pageId=1180716 좋은거 건졌다.. 음하하하하하하 나중에 시간내서 읽어 봐야 겠다. nested loops 조인에 관해 이래저래 찾다가 발견한 사이트. 아직 읽어 보지는 않았지만..;;; 완전 굿 인듯 ㅋ 2008. 9. 9.
regexp_like 를 이용해서 숫자인 걸 찾아라는 조건을 주자.. ... 제목이 더럽게 길구나.. -ㅇ- 예제를 좋아라 하는 케이군은 바로 예제를... with tt as ( select '123456' dd from dual union select '123kei' dd from dual ) select * from tt where regexp_like(dd,'[0-9]{6}') 위의 쿼리는 데이터가 숫자로 이루어져 있는 놈만 뽑아 내는 쿼리이다. regexp_like를 이용해서 간단하게 처리할 수 있다. 더구나 regexp_like를 사용하면 인덱스를 타고 다닌다더라.. 오우.. 직관적으로 보면 알겠지만.. 혹시나 싶어서 간단하게.. -_- [0-9] 는 보다 시피 숫자는 0~9 로 이루어져 있다는 걸 뜻하겠지... 요거로 장난치면 숫자 범위를 지정할 수도 있다. 그.. 2008. 9. 9.
SUM 과 COUNT 의 차이... 이런..... 이런게 혼동 될 줄이야.. -ㅇ- 저량의 데이터에서야 그냥 보면 되지만.. 대량의 데이터로 아이체크가 잘 안 될 때는.. 실수를 저질렀을 때 눈치 채지 못 할 수도 있다.. 아주~ 잠시 혼동을 한게 있는데.. SUM 과 COUNT 의 차이점... 나 요즘 왜 이러나.. =ㅁ= with test as ( select 'a' as col1,'1' as b from dual union all select 'a' as col1,'2' as b from dual union all select 'a' as col1,'3' as b from dual union all select 'b' as col1,'1' as b from dual union all select 'b' as col1,'2' as b .. 2008. 9. 5.
over(partition by) 를 사용해 보자. 종합 선물 세트다. with, union all, decode, row_number(), over(partition by) 가 나온다. with kk as ( select '강군' as aa,'배고플때' as bb, '바나나' as cc from dual union all select '강군','배고플때','멍멍이' from dual union all select '강군','배부를때','고래' from dual union all select '강군','배부를때','참치' from dual union all select '강군','정신없을때','해삼' from dual union all select '강군','배부를때','바나나' from dual union all select '케이씨','정신없을때','.. 2008. 8. 28.
숫자 출력 포맷을 지정해 보자 #1. 자리수 찍어 주기 숫자 포맷을 세 자리마다 ,를 찍어 줘보자. SELECT TO_CHAR(number_data, '999,999,999,999') FROM TBL_NAME 이게.. 엄청 간단해 보이지만.. 모르는 사람은 개삽질 하는 거다~ 하하하하하 ...... 끝 2008. 8. 21.
오라클 서비스 시작 시키는 배치파일 맹글어 보기 뭐.. 별건 아니다. 단지 오라클 시작 시키는게 쬐금 귀찮을 때 써 먹을 만한 배치파일이다. 내용도 별거 음따.. 하하..~ 오라클을 설치하면 기본적으로 자동 시작으로 되어 있을 것 이다. 허나.. 윈도우 로딩 할 때 시작되는 서비스 들이 많고 특히나 오라클 처럼 무겁다면... 9i는 덜 하지만 10g는 겁내 무거워 졌으므로... 로딩 시간이 길어지고 버벅이는 느낌도 든다. 또한.. 오라클을 매일같이 쓰는게 아니라면.. 자동 시작은 더더욱 쓸대 없는 짓이 된다. 해서~ 서비스 시작을 수동으로 바꿔 놓고.. 낸쥬 쓸대가 있을 때 서비스를 수동 시작하려면 솔직히 귀찮다 -_- 고로.. 더블 클릭하면 오라클에서 필요한 서비스가 올라오게 만드는 배치파일을 하나 맹글기록 하자. 기본적인 문법은.. NET STAR.. 2008. 7. 7.
XMLTYPE 컬럼 ?? 오라클 컬럼 타입 중에 XMLTYPE 라는 녀석이 있다. 일반적인 쿼리로 조회를 하면 컬럼데이터에 (ORAXML) 이라고 찍힐 뿐이다... .... 어쩌라고 ㅡㅡ 이 놈들 데이터를 확인하려면 좀 다른 구문이 필요하다. TBL_NAME 테이블에 xml_col_name 이란 녀석의 내용을 확인하고자 한다면 요렇게 날려준다. SELECT XMLSERIALIZE(CONTENT xml_col_name AS VARCHAR2(2000)) FROM TBL_NAME; 말 그대로 XML 형식으로 저장이 되어 있는걸 확인 할 수 있다. 내용을 확인 했으면 그 중에 한 놈을 찍어서 뽑아 보도록 하자. 아래와 같이 날리면 testValue 라는 항목의 값만 가지고 온다. SELECT extractValue(xml_col_nam.. 2008. 7. 3.
CHAR형과 VARCHAR형 타입 JOIN 시 거지 같은 경우 완전 거지 같은 경우 DB2에서 오라클로 전환하면서 생긴거.. A 테이블에는 CHAR 형태로 되어 있고 B테이블에는 VARCHAR형태로 되어 있는 컬럼이 있다. 이 놈 두개를 JOIN을 해서 거시기 하는 건데.. DB2에서 쓰던 쿼리를 그대로 쓰면... 값이 안 나온다. 당췌 원인을 모르다가.. 혹시나 싶어서 데이터 길이를 제어 봤다. (LENGTH 함수 이용) 한놈은 3 이고 한놈은 6이다.... 뭐 하는 짓이야 ㅡㅡ 눈에 보이는 거는. .똑같아 보이지만 길이가 다르다면 공백이 포함 되어 있다는 뜻이니까.. 해서.. 비교시에 A.COL1 = B.COL2 이렇게 쓰던 것을.. 이렇게 바꿨다. A.COL1 = RTRIM(B.COL2) .... 개 삽질이다... 2008. 6. 5.
이것저것 잡다 팁이라고 하기에도 뭐한... # Tip 1 dedicate mode : 서버와 클라이언트간에 1:1로 프로세스를 매칭한다. # Tip 2 최초 접속시 리스너 프로세스에 접속하고 리스너 프로세스가 접속 포트 번호를 클라이언트에게 보내 준다. 클라이언트는 해당 포트를 가지고 서버 프로세스에 다시 접속한다. # Tip 3 ; 콜론 안 찍고 쿼리 날렸는데 에러 안 떨어지면 sql*plus 언어다. ex) desc table_name # Tip 4 q'[ ] 싱글쿼터의 범위를 [] 안으로 하겠다는 마크. [] 안에는 ' 가 들어가도 상관없다. # Tip 5 SQL> show all 하면 실행 가능한 속성 나온다. # Tip 6 바인드 쓰는 이유는 SQL문장을 공유하기 위해서 이다. select * from test where col_a = .. 2008. 4. 21.
테이블 제약조건,타입을 찾아 보자 뭐.. 대단한건 아니고 간단하게 제약조건(PK,FK....)을 찾아 보는 겁니다. 사용할 테이블은 user_cons_columns 와 inner join user_constraints 입니다. 두개를 조인한 이유는... desc 해서 컬럼명을 보면 알 겁니다... 이런 무책임한 -_-;;; select cc.constraint_name,c.constraint_type from user_cons_columns cc inner join user_constraints c on cc.constraint_name = c.constraint_name all_도 있고 dba_도 있지만 user_를 쓴건.. 너무 많이 나오면 골치 아프니까 내꺼만 보자~ 뭐 이런 취지입니다. 2008. 4. 3.
반응형