본문 바로가기
728x90
반응형

데이터베이스/Oracle4

[Oracle] 오라클 순위 관련 함수(ROW_NUMBER, RANK, DENSE_RANK) 게시판의 기본적인 정보와 조회수에 따른 행의 번호를 확인하고 싶을 때, 다음과 같은 쿼리를 사용하였다. SELECT ROWNUM, ID, TITLE, WRITER_ID, REGDATE, HIT FROM NOTICE ORDER BY HIT ASC; 흠... 조회수 오름차순으로 데이터가 보여지기는 하는데, ROWNUM을 먼저 반영하고 그다음에 정렬을 한듯한 느낌이다. HIT 오름차순으로 정렬한 후 ROWNUM을 반영하는 방법이 없을까.. 물론 있다 SELECT ROW_NUMBER() OVER (ORDER BY HIT) , ID, TITLE, WRITER_ID, REGDATE, HIT FROM NOTICE; ROW_NUMBER()를 이용하면 원하는 결과를 얻을 수 있다. SELECT ROW_NUMBER(), .. 2021. 6. 10.
[Oracle] 오라클 시간 관련 기능 - 세션 설정, 타임 존 변경 등 (1) 현재 날짜 출력 포멧을 바꾸는 방법 : SESSION NLS_DATE_FORMAT 변경 전 : SELECT SYSDATE, CURRENT_DATE FROM DUAL; 변경하는 구문 : ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS'; 변경 후 : SELECT SYSDATE, CURRENT_DATE FROM DUAL; 다시 원복하기 : ALTER SESSION SET NLS_DATE_FORMAT = 'YY/MM/DD'; 원복 후 : (2) 현재 위치한 장소의 시간대 설정 변경 전 : SELECT SYSDATE, CURRENT_DATE FROM DUAL; 변경 구문 : ALTER SESSION SET TIME_ZONE = '-08:00'; -.. 2021. 6. 10.
[Oracle] 오라클 ROWNUM과 BETWEEN을 이용한 조회 NOTICE라는 테이블을 조회한다. SELECT * FROM NOTICE; 여기서 이제 ROWNUM을 같이 조회할 것이다. SELECT ROWNUM, * FROM NOTICE; 오류가 뜬다. 이유가 뭘까? 이유는 * 앞에 어느 스키마인지 지정되지 않아서이다. SELECT ROWNUM, NOTICE.* FROM NOTICE; 다시 실행해보면 잘 나온다. 여기서 이제 ROWNUM이 1번째에서 5번째 행까지 해당되는 데이터들을 찾아본다. SELECT ROWNUM, NOTICE.* FROM NOTICE WHERE ROWNUM BETWEEN 1 AND 5; 그렇다면 ROWNUM을 2번째부터 조회하면 어떻게 될까? SELECT ROWNUM, NOTICE.* FROM NOTICE WHERE ROWNUM BETWEEN.. 2021. 6. 10.
[Oracle] 오라클 정규표현식을 사용하여 문자열에서 핸드폰 번호가 있는 문자열 찾아내기 해당 컬럼의 데이터가 처음부터 끝까지 핸드폰번호로만 구성된 경우 SELECT * FROM TABLE WHERE REGEXP_LIKE(COLUMN, '^01[016-9]-\d{3,4}-\d{4}$'); '^01[016-9]-\d{3,4}-\d{4}$' 여기서 맨 처음의 ^는 컬럼의 데이터가 ^이후로 시작된다는 뜻 맨 끝의 $는 $이전으로 데이터가 끝난다는 뜻 찾고자 하는 데이터에서 핸드폰 번호가 포함되어 있는 컬럼을 찾는 경우 SELECT * FROM TABLE WHERE REGEXP_LIKE(COLUMN, '01[016-9]-\d{3,4}-\d{4}'); 2021. 6. 9.
728x90
반응형