oracle

SQL

[Oracle/MySQL] ROWNUM과 LIMIT, 행 수 제한하기

업무 중에 가끔씩 가장 최신 데이터 1개만 출력하는 등의 쿼리를 짠다. 그와 관련해서 ROWNUM과 LIMIT에 대해 정리해보려한다. Oracle에서 행 수 제한하기 ROWNUM으로 특정 개수 데이터 조회하기 SELECT * FROM CUSTOMERS WHERE ROWNUM=2; WHERE 절에서 ROWNUM을 사용하여 데이터 개수를 제한할 수 있다. 단, '=' 연산이기 때문에 조회한 데이터가 1개밖에 없을 때는 결과가 출력되지 않는다. 만약에 보고싶다면 '

SQL

[Oracle/MySQL] CONCAT, 문자열 합치기

문자열을 합치는 예로는 주소가 있다. 주소는 데이터가 나뉘어서 저장되기도 하는데 출력할 때는 문자열을 합쳐야하고 이는 CONCAT으로 해결할 수 있다. CONCAT을 사용하는 방법은 Oracle과 MySQL이 동일하나, 약간의 차이점이 있다. Oracle에서 문자열 합치기 CONCAT으로 문자열 합치기 SELECT CONCAT(CONCAT('문자열',' '), '합치기') FROM DUAL; -- 문자열 합치기 CONCAT을 사용해서 문자열을 더할 수 있지만, 매개변수가 2개로 제한되어있다. 그래서 추가적인 연산을 하려면 CONCAT 함수를 연달아 사용해야한다. ||으로 문자열 합치기 ( Oracle만 가능 ) SELECT "문자열" || " " || "합치기" FROM DUAL; -- 문자열 합치기 위..

SQL

[Oracle/MySQL] 날짜 연산, 이전 달 출력하기

오라클을 사용하는 업무 중에 없는 날짜를 조회에서 SQL 에러가 발생했던 일이 있었다. 하여 오늘은 이에 대한 내용을 정리하려 한다. Oracle에서 날짜 연산하기 INTERVAL 로 이전 달 출력하기 ( YYYYMM 포맷 ) SELECT TO_CHAR(SYSDATE - (INTERVAL '1' MONTH),'YYYYMM') FROM DUAL; -- ORA-01839 에러 발생 SELECT TO_CHAR(TO_DATE(TO_CHAR(SYSDATE,'YYYYMM'),'YYYYMM') - (INTERVAL '1' MONTH),'YYYYMM') FROM DUAL; -- 202304 위에서 에러가 발생하는 이유는 다음과 같다. 현재 날짜는 5월 31일이고 1 Month를 빼면 4월 31을 찾게되며 없는 날짜를 ..

SQL

[Oracle/MySQL] NVL과 IFNULL, COALESCE로 널 값 처리하기

널 값인 경우에 null을 그대로 출력할 수는 없으니 다른 값으로 출력하기 위한 함수가 존재하는데, 오늘은 그에 대해서 정리를 해보려 한다. 밑에 DEPARTMENT 테이블을 이용해 알아보자. deptno name location 1 Finance New York 2 Development - 현재, deptno=2이고 name='Development'인 데이터의 location이 널값이다. Oracle에서 널 값 처리하기 오라클에서는 NVL을 통해 널값을 처리할 수도 있고, 값이 있는 경우 원하는 값으로 대체하여 출력할 수도 있다. NVL(column명, 'null일 때 출력값') 로 널 값 처리하기 SELECT name,location,NVL(location,'none') FROM departments..

SQL

[Oracle/MySQL] DATE_FORMAT과 TO_CHAR, 날짜 출력하기

코딩테스트 SQL문제를 풀 때는 DATE_FORMAT을 사용해서 풀다가, 막상 업무를 할 때는 Oracle을 쓰니 날짜를 원하는 포맷으로 출력하는 것이 헷갈려서 같이 정리를 해보려한다. Oracle에서 날짜 형식 변경하기 DATE타입의 날짜를 원하는 포맷으로 출력하기 위해 많이 쓰는 함수가 TO_CHAR('DATE', '원하는 포맷')이다. TO_CHAR('DATE', '원하는 포맷') 으로 날짜/시간 출력하기 SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD') FROM DUAL; SELECT TO_CHAR(SYSDATE,'yyyy-mm-dd') FROM DUAL; -- 2023-05-20 SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD HH24:MI:SS') FROM DUA..

SQL

[Oracle/MySQL] SUBSTR과 SUBSTRING, 문자열 자르기

Oracle과 MySQL 에 있는 '문자열 자르기' 기능에 대해 정리를 해보려한다. Oracle에서 문자열 자르기 SUBSTR('문자열','시작 위치') 을 통해 문자열을 자를 수 있다. 혹은, SUBSTR('문자열', '시작 위치', '길이') 처럼 길이를 추가하여 원하는 길이만큼의 문자열을 가져올 수 있다. SUBSTR('문자열','시작 위치') SELECT SUBSTR('PROGRAM',2) FROM DUAL; -- ROGRAM 주의할 점은 시작 위치에서 첫번째 인덱스는 0이 아닌 1이라는 것이다. 그러므로 결과값은, ROGRAM 이 된다. SUBSTR('문자열', '시작 위치', '길이') SELECT SUBSTR('PROGRAM',2,3) FROM DUAL; -- ROG 길이를 매개변수로 추가하..

limnj
'oracle' 태그의 글 목록