본문 바로가기

DataBase/Oracle

[Oracle Database] MSSQL 날짜 변환 오라클에서는 TO_CHAR()을 사용해서 문자열로 변환이 가능했다. 상당히 유용하며,날짜를 변환할때 많이 사용했었다. TO_CHAR(SYSDATE,'YYYY-MM-DD') -> 2013-01-14TO_CHAR(SYSDATE,'YYYY/MM/DD') -> 2013/01/14 TO_CHAR(SYSDATE,'YYYYMMDD') -> 20130114 MSSQL에서는 CONVERT(VARCHAR(10),GETDATE(),120) -> 2013-01-23 CONVERT(VARCHAR(10),GETDATE(),111) -> 2003/01/23 CONVERT(VARCHAR(8),GETDATE(),112) -> 20030123 와 같이 사용할 수 있다. 120, 111, 112은 날짜 표현으로 위와 같은 방식으로 날짜를.. 더보기
[Oracle Database] 날짜표현 방법 오라클에서는 다음과 같은 방법으로 날짜를 표현 할 수 있다. select to_char(add_months(sysdate,-1),'yyyy-mm-dd'),-- 한달전 오늘 to_char(add_months(sysdate,-12),'yyyy-mm'), to_char(add_months(sysdate,-12),'yyyy-mm-dd'), -- 1년전 오늘 to_char(add_months(sysdate,-12),'yyyy'), to_char(sysdate-1,'yyyy-mm-dd') -- 어제to_char(sysdate-1,'yyyymmdd') -- 어제 from dual 더보기
[Oracle Database] 10g XE 설치후 리스너 설정 & tns설정 시스템 -> 시스템 보호-> 고급 -> 환경변수 -> 시스템 변수의 path 에C:\oraclexe\app\oracle\product\10.2.0\server\BIN; 추가 C:\oraclexe\app\oracle\product\10.2.0\server\NETWORK\ADMIN C:\Documents and Settings\Administrator>cd\ C:\>sqlplus /nolog로그인없이 SQL*PLUS 접속 (접속은 하되 로그인은 하지 않는다 [/nolog]) SQL*Plus: Release 10.2.0.1.0 - Production on 화 11월 16 10:41:26 2010 Copyright (c) 1982, 2005, Oracle. All rights reserved. SQL> show.. 더보기
[Oracle Database] Decode함수 사용법 어느 정도 삽질을 하다가 살짝살짝 공부를 하고 있는 oracle의 세계는 참 신비롭다. 오라클에는 DECODE라는 기특한 녀석이 있다. 오라클에서만 된단다.용도는 SELECT 구문 내에서 비교 연산을 수행해 주는 함수 이다. DECODE( 컬럼1, '홍길동', 1, 0 ) AS 블라블라이런 방식인데 뜻은, 컬럼1이 홍길동과 같으면 1을 아니면 0의 값을 가진다. 또는 집계와 이중 사용도 가능하다. SUM(DECODE(컬럼1, '홍길동', 1, 0)) DECODE( 컬럼1, '홍길동', DECODE(컬럼2, '임꺽정', 1, 0), 3) 이런식이라고 할 수 있겠다. 2중 사용은 AND연산으로 수행된다는 거만 주의하면 된다. 더보기
[Oracle Database] 테이블 삭제 PURGE 라는 명령어를 찾다가 발견한 내용. DROP TABLE TABLE_NAME; 10G부터는....RECYCLEBIN으로 이동됨DROP TABLE TABLE_NAME PURGE;--RECYCLEBIN으로 까지 삭제 됨PURGE TABLE TABLE_NAME;//RECYCLEBIN 삭제됨 더보기
[Oracle Database] MERGE INTO구문 사용법 하나의 저장 프로서지(SP)에서 UPDATE와 INSERT를 같이 사용해야 할 경우가 때때로 있다. 이 상황중에서 하나의 대상 테이블에서 해당 값이 row가 존재한다면 값을 UPDATE하고존재 하지 않는다면 INSERT를 진행해야 하는 경우에서 몇가지 방법이 있겠으나 편리한방법이 존재하기에 적어 두려고 한다. 기존에는 SELECT NVL(MAX(컬럼), 0) INTO 변수 FROM 테이블 WHERE 조건; IF 변수 0 THEN UPDATE 테이블 SET 대상 컬럼 = 적용 값 WHERE 조건ELSE INSERT INTO 테이블 (컬럼...) VALUES ( 적용 값...);END IF; 와 같은 방식을 사용했는데... 역시나 더 좋은 방법이 존재했었다.이 문법은 다음과 같다. MERGE INTO 테이블.. 더보기
[Oracle Database] 형변환(문자열->Number) ※ 기본적으로 개인적인 앎에 대한 메모를 위한 공간입니다. 일을 하다보면 컬럼을 문자열로 지정하고 값은 숫자로 넣을 때가 있다. 왜 그렇게 했는지는 모르겠다. 아마 어떤 거룩한 뜻이 있었던거 같기도 한데 머 일단 넘어가자. 예를 들어 TEMP라는 테이블에 CODE_INDEX 라는 컬럼이 있고, 이 컬럼은 VARCHAR2(2) 라고 하자, 그 컬럼에 값을 1,2,3...30 까지 순서대로 값을 넣었다고 한다면 일반적으로 우리가 SELECT CODE_INDEX FROM TEMP 라고 했을때 기대하는 결과물은 CODE_INDEX12...1011..30 이와 같은 결과물일 것이다. ORDER BY CODE_INDEX ASC 를 하던 말이다.하지만 문자열로 지정되어 있는 컬럼은 SELECT를 해보면 CODE_IN.. 더보기
[Oracle Database] Rownum구문 사용법 일을 하다가 최대 Row가 130인 컬럼에 100개만 반환해달라는 요청을 받았다. 즉, 일반적으로 SELECT를 하면 130개의 ROW가 결과로 반환되는데 그 중에서 100개만 전달해달라는 요청이었는데. 이와 같은 경우에 사용할 수 있는 유용한 명령어(?), 함수(?)가오라클에 있다. 다른 SQL에도 있을꺼 같은데. 일단 귀찮으니 패스. 나중에 꼭 찾아보자. ROWNUM 1. 오라클 에서만 사용가능.2. 조회된 Row의 number를 가지는 가상의 컬럼3. 주로 paging처리, N-Top 조회시 사용. 위의 요청의 경우는 SELECT * FROM 테이블 WHERE ROWNUM 더보기
[Oracle Database] 임시테이블 사용 오라클에서 MS_SQL에서 처럼 임시 테이블 사용하는 법. 1. 임시 테이블생성 SQL> create global temporary table temp_tab (col1 number, col2 char(15)) on commit delete rows ; 2. 임시 테이블에 인덱스 만들기 SQL> create index temp_tab_n1 on temp_tab(col1); 3. 임시 테이블에 데이터 인서트 SQL> insert into temp_tab values ( 1 , 'ABC') ; ★ 주의 : Insert/Update 했다고 Commit 하시면 안됩니다. 4. 임시 테이블에서 데이터 가져오기 SQL> select * from temp_tab ; 더보기
[Oracle Database] NVL함수 사용 중 유의점 오라클에 대상의 값이 존재하지 않을 경우 다른 값으로 치환해 주는 함수가 있다. NVL 함수인데...얼마전 우연히 이 함수를 사용하면서 난관에 봉착한 적이 있었다. select NVL(대상컬럼, 0) into 받을 변수 from 테이블 where 조건 = 전달 받은 조건; 이 구문을 사용하면서 기대했던 값은. 대상 컬럼의 값이 존재하지 않는다면 변수에 값이 0이 들어가길 희망했다. 하지만 변수에 값이 세팅되지 않고 예외상황이 발생했고, 한참을 끙끙거렸더랬다. 이유는 간단했다. 이미 이 글을 보는 누군가는 저 구문에서 한가지가 빠져 있다는 것을 눈치챈 분들도 있을 것이다. 위의 구문을 실행했들때, 조건에 맞는게 없다면 NVL에서 대상을 변경 시키지 못한다.해서 NVL(MAX(컬럼명)), 0) 혹은 NVL(.. 더보기
[Oracle Database] 정렬시 변환 방법. (Order by Cast) order by를 사용할 때 기본적으로. select * from 테이블 명 where 조건절 order by 컬럼명;이와 같은 방식으로 쿼리를 주로 사용하게 된다. 이렇게 사용하게 되면 컬럼의 값으로 줄을 선 결과를 얻게 되는데. 때때로 이 해당 컬럼명의 값이 숫자임에도 불구하고 문자열로 들어가 있는경우가 있다. 즉 1 이 아니라 "1"이 들어가 있다는 것인데. 이 경우는 문자열을 숫자로 변환해서 불러오면 된다. select * from 테이블 명 where 조건절 order by cast(컬럼명 as 변환 형식) 이렇게 해줄 수 있다.예를 들면. select * from 테이블 명 where 조건절 order by cast(컬럼명 as number) 라고 하면 number 형식으로 변환되어 정렬이 된다. 더보기
[Oracle Database] 저장 프로시저(SP) 실행 방법 오라클에서 저장 프로시저를 임의로 실행 시켜 볼 일이개발 중에는 간간히 일어난다. 이때 SP를 실행 시켜 보면 되는데. 방법은 다음과 같다. VARIABLE P_RS REFCURSOR;EXECUTE 프로시저 이름( 인자, :P_RS);PRINT P_RS; 이렇게 하면 SP안에 SELECT가 있다면 결과가 보여질 것이고, 아니면 임의의 변수를 선언해서 구문 중간중간 넣어두고 에러를 캐치하게 해두고 프린트를 찍도록 하였다면 변수에 진행된 곳까지의 변수가 나올 것이다.혹은 에러메시지를 출력하도록 했다면 그것도 나오겠다. 머 이런 방법들은 다음에 잊어 먹기 전에 포스팅 하도록 하자. 끝!!! 더보기