오라클 Benthic Golden(골든) 설치, 로그인, 쿼리실행, 저장 1. 다운로드 및 설치 1) http://www.benthicsoftware.com/downloads.html 접속 후 설치파일 다운로드 2) Golden 6.x 버전을 다운로드 받는다. (필자는 5.x 버전을 설치 하였음) - 가격은 $40정도 아주 저렴한 편이다 3) 설치파일을 Next를 눌러서 설치한다. 2. 로그인 (Database Login)Username, Password, Database를 입력 및 선택 후 OK 버튼을 누른다 Save This Password 체크박스를 선택하면 다음 로그인시 비밀번호가 저장되어 있다 More>> 버튼을 클릭하면 이전에 로그인 시 저장되었던 정보를 볼 수 있다 3. 쿼리 실행 (Quer..
오라클에서는 문자열에서 원하는 문자를 찾을 때 INSTR 함수를 사용한다. INSTR 함수는 대소문자를 구별하여 문자를 검색하며, 여러 개의 문자를 찾을 때는 OR 연산자를 사용하면 된다. 해당 문자를 한번 찾으면 더 이상 검색을 하지 않기 때문에 필요에 따라서 뒤(마지막)에서 부터 검색을 할 수도 있다. INSTR ( [문자열], [찾을 문자 값], [찾기를 시작할 위치(1,-1)], [찾은 결과의 순번(1...n)] ) 기본 사용법 SELECT INSTR('Oracle Database', 'Database') AS result1 , INSTR('Oracle Database', 'Server') AS result2 FROM dual INSTR 함수는 문자열에서 문자를 찾으면 문자의 시작 위치를 반환한다..
오라클의 일반적인 쿼리문에서는 바인드 변수에 쉼표(,)를 추가하여 여러 개의 값을 IN 절에 전달해도 하나의 문자열로 인식하기 때문에 정상적으로 작동하지 않는다. IN 절에 여러 개의 파라미터(바인드 변수)를 전달하기 위해서는 동적 쿼리문을 사용해야 하지만, 동적 쿼리문을 사용하지 않아도 여러 개의 파라미터를 쿼리문에서 인식할 수 있도록 하는 다양한 방법이 존재한다. 대표적인 방법으로는 INSTR 함수는 사용하는 방법이고, 두 번째는 정규식 함수를 사용하여 문자열을 구분자로 쪼개서 IN 절에 입력할 수 있는 방법이다. 목차INSTR 함수를 사용하는 방법정규식(REGEXP) 함수를 사용하는 방법 INSTR 함수를 사용하는 방법WITH dept AS ( SELECT 10 deptno, 'ACCOUNTIN..
WM_CONCAT 함수를 이용하여 손쉽게 여러행의 데이터를 한 컬럼으로 합칠 수 있다.□ 방법 1. (WM_CONCAT 이용) --가상 테이블 WITH TEST_TABLE AS ( SELECT '고구려' COUNTRY, '1대' ST, '동명성왕' KING_NM FROM DUAL UNION ALL SELECT '고구려' COUNTRY, '3대' ST, '대무신왕' KING_NM FROM DUAL UNION ALL SELECT '백제' COUNTRY, '1대' ST, '온조왕' KING_NM FROM DUAL UNION ALL SELECT '고구려' COUNTRY, '2대' ST, '유리왕' KING_NM FROM DUAL UNION ALL SELECT '백제' COUNTRY, '3대' ST, '기루왕' ..
데이터를 실수로 삭제(DELETE) 또는 수정(UPDATE)을 하고 COMMIT을 했다면 당황하지 말고 TIMESTAMP를 사용하여 이전의 데이터를 조회하여 복구할 수 있다. 오라클 9i Release 2부터 Flashback이라는 기능이 생겼는데, 일종의 휴지통이라고 생각하면 된다. Flashback의 사이즈만큼만 과거 데이터를 보관하고 있으니, 변경이 자주 발생하는 테이블은 복구 가능한 시점이 짧을 수 있다. SELECT * FROM test_table AS OF TIMESTAMP(SYSTIMESTAMP - INTERVAL '10' MINUTE) WHERE id = '1234' 위의 쿼리를 조회하면 10분 이전의 데이터가 조회된다. 단위는 SECOND, MINUTE, HOUR, DAY로 바꿔 쓸 수 ..
직원명을 초성으로 검색할수 있도록 요청이 들어와서 급하게 만들었다. 직원수가 아주많은곳에서는 where절에 사용하면 안됨... 예) fn_korinitialkeyword('홍길동') return : ㅎㄱㄷ select * from 테이블 where fn_korinitialkeyword(직원명컬럼) like '%ㅎㄱㄷ%' function fn_korinitialkeyword( str in varchar2) return varchar2 is returnStr varchar2(100); cnt number := 0; tmpStr varchar2(10); begin if str is null then return ''; end if; cnt := length(str); for i in 1 .. cnt loop ..
오라클에서 쿼리문을 작성하다 보면 테이블에 저장되지 않는 날짜까지 포함해서 조회해야 할 경우가 있다. 이럴 때는 시작일자와 종료일자를 설정하여 날짜 뷰를 생성하여 아우터 조인을 하면 쉽게 해결이 된다. 날짜 뷰 만들기 SELECT TO_DATE('20211201','YYYYMMDD') + LEVEL - 1 AS dates FROM dual CONNECT BY LEVEL
오라클 쿼리에서 칼럼에 구분자로 입력된 값을 행으로 분리(Split)하여 조회해야 할 상황이 종종 발생한다. 대부분 값을 조회하여 프로그래밍 코드에서 구분자를 분리하는 작업을 한다. 그러나 쿼리에서 미리 행으로 분리해야 하는 경우도 발생하므로 아래의 예제를 참고하면 된다. 부하가 많이 발생할 수 있으므로 데이터가 많은 경우는 권장하지 않는다. 예제 1 - Oracle 10g 이상 (정규식 함수 사용) SELECT REGEXP_SUBSTR(a.langList, '[^|]+', 1, LEVEL) AS split_result FROM (SELECT 'Java|Kotlin|Python|Swift' AS langList FROM dual) aCONNECT BY LEVEL 위의 예제는 구..
오늘이 속한 주의 월요일부터 일요일까지 일자가 필요할때가 있다 select to_char(a.s_date, 'yyyy-mm-dd') monday , to_char(a.s_date+1, 'yyyy-mm-dd') tuesday , to_char(a.s_date+2, 'yyyy-mm-dd') wednesday , to_char(a.s_date+3, 'yyyy-mm-dd') thursday , to_char(a.s_date+4, 'yyyy-mm-dd') friday , to_char(a.s_date+5, 'yyyy-mm-dd') saturday , to_char(a.s_date+6, 'yyyy-mm-dd') sunday from ( select sysdate - (to_number(to_char(sysdate,..