독서하는 개발자's Blog

반응형



분석1. [쿼리 위주의 분석]


mybatis 사용

mybatis #{abc}    ibatis #abc#

주로 쓰는 mybatis => REGEXP_SUBSTR (정규표현식 사용해서 전화번호,주민번호 끊을때)

TRIM => 좌, 우 여백제거

CASE WHEN 조건 THEN 1 ELSE 2 END

ADD_MONTHS

INSTR('비교할 대상', '비교하고자하는 값', 비교를 시작할 위치, 검색된 결과의 순번)

LPAD(왼쪽에 값 추가 - 문자 길이 채우기)

 

foreach 태그사용

<foreach collection="list나 array" item="alias명" open="(" close=")" separator=",">

open : 시작 / close : 닫기 / separator : 구분자


LAG, LEAD   - 이전글, 다음글할 때, 유용


oracle내 함수사용 function


ROW_NUMBER()


/////////////////////////////////////////////////////////////////////////////////////////


분석2. [쿼리 위주의 분석2]


sys_connect_by_path - 조회값을 연속으로 붙히고싶을때

==> 계층형 쿼리에만 사용할 수 있는 함수. 첫번째 파라미터 컬럼 / 두번째 파라미터 구분자

==> 두번째 파라미터로 컬럼값에 포함된 문자는 사용할 수 없다.

==> 상위메뉴에서부터 구분자로 설정한 값을 가져올수 있다.

ex) START WITH CONNECT BY("COLUMN", ">")  ==> 출력할 때, one > two

상위계층을 계속 가져옴


level - 계층적 쿼리

==> 해당 데이터가 몇 번째 단계이냐의 의미


LPAD(들어갈 문자, 자리수, 공백일경우 들어갈 문자)


LEVEL ==> 계층정보를 나타낼때 쓰임

LPAD( "", 2*(LEVEL-1)) || NAME  ==> 주로 이렇게 쓴다.

==> 루트노드 1, 자식노드 2, 자손노드 3


START WITH 조건1 CONNECT BY PRIOR 조건2 ORDER SIBLINGS BY

==> 오라클 지원 계층적 정보 표현

==> START WITH 조건1 : 루트노드 식별

==> 조건1에서 서브쿼리도 가능하다.

==> CONNECT BY PRIOR 조건2 : 부모와 자식노드들 간의 관계를 명시

==> 조건2에서는 반드시 PRIOR 연산자 포함 - 부모노드의 컬럼을 식별하는데 사용

==> 조건2에서 서브쿼리 사용불가


CONNECT_BY_ROOT ==> 계층형 쿼리에서 최상위 노드를 찾고자 할 경우사용


CONNECT_BY_ISLEAF ==> 계층형 쿼리에서 해당하는 로우가 자식노드가 있는지 없는지 체크

자식노드가 있으면 0, 없으면 1


NVL(값, 반환값1, 반환값2)

==> NVL값이 null일경우 반환값1 반환 // NVL값이 null이 아닐경우 반환값2 반환


NVL과 비슷한 DECODE

DECODE(값, 조건, 반환값1, 반환값2)

==> 값이 조건을 만족할때 반환값1을 반환 // 아니면 반환값2 반환


if와 비슷한 case-when-then(가져온 값을 조건에 비교)


merge into + using on + when matched then + update set + when not matched then + insert values

==> 테이블 데이터가 이미 존재하면 업데이트, 존재를 하지않으면 입력

==> 한번에 UPDATE, INSERT하는 방법


/////////////////////////////////////////////////////////////////////////////////////////

반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band