오라클에서 날짜의 요일(Weekday)을 구하기 위해서는 TO_CHAR 함수를 사용하면 된다. TO_CHAR 함수는 날짜의 요일을 정수 또는 문자(영문 or 한글)로 반환받을 수 있다. 아래의 예제를 보면 쉽게 이해할 수 있을 것이다. 목차 요일 구하기 (정수) 요일 구하기 (한글) 사용 예제 요일 구하기 (정수) SELECT TO_CHAR(SYSDATE, 'yyyy-mm-dd') AS "날짜" , TO_CHAR(SYSDATE, 'd') AS "요일" FROM dual TO_CHAR("날짜", "포맷") TO_CHAR 함수의 포맷 인자에 "d"를 입력하면 해당 날짜의 요일이 정수로 반환된다. (1:일, 2:월, 3:화, 4:수, 5:목, 6:금, 7:토) 요일 구하기 (한글) SELECT TO_CHAR(..
[ 오라클 날짜의 년을 더하고 빼는 방법 ] 날짜에서 년을 더하고 빼기 위해서는 ADD_MONTHS() 함수를 황용하여 년을 개월수로 환산하여 연산을 하거나 날짜에 일수를 빼는 방법을 주로 사용한다. 위의 방법도 똑같은 결과의 값을 얻을수 있지만 INTERVAL을 활용하면 조금더 쉽고 직관적으로 년을 더하거나 뺄수 있다. --년을 더하고 빼기 SELECT SYSDATE - (INTERVAL '2' YEAR) MINUS_YEAR , SYSDATE + (INTERVAL '2' YEAR) ADD_YEAR FROM DUAL ※ INTERVAL 여러가지 활용 방법 SYSDATE + (INTERVAL '1' YEAR) --1년 더하기 SYSDATE + (INTERVAL '1' MONTH) --1개월 더하기 SYSD..
ORA-01785: ORDER BY 항목은 SELECT 목록 식의 수라야 합니다 ORDER BY 절에서 해당 오류가 발생 하였을 경우 ORDER BY 절에 함수(DECODE, NVL, TO_NUMBER, 사용자함수 등)를 사용하였는지 확인해 보아야 한다. 일반적으로 ORDER BY 절에 함수를 사용하는건 아무런 이상이 없지만 해당 쿼리문에 집합연산자 ( UNION, UNION ALL , MINUS, INTERSECT)가 사용이 되었다면 오류가 발생 한다. 집한연산자가 사용된 쿼리문의 ORDER BY 절에는 함수 사용을 하지 말아야하며 꼭 사용해야 한다면 해당 쿼리문을 인라인 뷰(INLINE VIEW)로 감싸서 ORDER BY를 하면 된다. UNION ALL을 사용한 쿼리문에서 ORDER BY 절에 DEC..
오라클 쿼리를 작성하다 보면 칼럼의 수치값만큼 행의 개수를 늘려서 조회를 해야 하는 경우가 있다. CONNECT BY를 사용하여 순차적인 값이 있는 가상 테이블을 만들어서 조인하는 방법과 물리적인 테이블을 만들어서 조인하는 방법이 있다. 아래는 가상 테이블을 활용하여 칼럼의 수치값만큼 SELECT 행을 추가하는 방법이다. CNT 칼럼의 수치값만큼 해당 NM의 행을 늘리는 방법이다. WITH test_table AS ( SELECT 'AAA' nm, 3 cnt FROM dual UNION ALL SELECT 'BBB' nm, 5 cnt FROM dual UNION ALL SELECT 'CCC' nm, 2 cnt FROM dual ) SELECT a.nm , a.cnt , b.num FROM test_tab..
오라클 GROUP BY 쿼리에서 ROLLUP 함수를 사용하여 손쉽게 합계와 소계를 구할 수 있다. 1. GROUP BY 컬럼이 하나인 경우 - GROUP BY 절에 ROLLUP 함수를 추가한 후 그룹핑 컴럼을 인자로 넣는다 SELECT job , SUM(sal) FROM emp GROUP BY ROLLUP(job) 2. GROUP BY 컬럼이 두 개 이상인 경우 - 합계 및 소계 까지 계산되어 표시된다 SELECT job , deptno , SUM(sal) FROM emp GROUP BY ROLLUP(job, deptno) 3. GROUP BY 컬럼이 두 개 이상인 경우 합계만 표시하고 싶을 때 - HAVING 절에 GROUPING_ID 함수를 이용하여 소계 값을 제외할 수 있다 SELECT job , ..
ORA-24338: 문장 처리가 수행되지 않았습니다 PL-SQL 프로시저(Procedure) 작성 시 프로시저 내 쿼리가 수행되지 않고 프로시저가 종료가 되어 해당 오류가 발생 하였다 아래의 예시를 보면 if문 내의 쿼리가 작성되어 있는데 조건 변수(in_tab, in_gubun)의 값이 잘못 되어서 if내의 쿼리가 수행되지 않고 프로시저가 종료되어 해당 오류 발생 파라미터 변수 값을 수정 후 오류 해결됨
오라클에서 여러 개의 단어를 LIKE로 검색하기 위해서는 동적 쿼리를 사용하거나 LIKE를 OR로 묶어서 사용했다. Oracle 10g부터 정규식 함수가 추가 되었으며 그 중에서 REGEXP_LIKE 함수를 사용하여 다중 검색을 쉽게 할 수 있게 되었다. 기본 사용법 WITH temp_table AS ( SELECT 'Samsung Galaxy Note 4' text FROM dual UNION ALL SELECT 'Apple iPhone 6 Plus' text FROM dual UNION ALL SELECT 'Samsung Galaxy text' text FROM dual UNION ALL SELECT 'Apple iPhone 6' text FROM dual UNION ALL SELECT 'LG G3'..
TO_CHAR를 사용하여 숫자를 문자로 변환하면 소수점 이상이 0일 경우 점(.)으로만 표시되어 변환이 된다. 아래와 같은 포맷(FORMAT) 옵션을 활용하여 변환된 수치 값의 형태를 결정할 수 있다. SELECT TO_CHAR(0.40, 'FM9990.99') STR , RTRIM(TO_CHAR(4, 'FM9990.99'),'.') STR2 --정수일경우 소수점표시 안함 (RTRIM) FROM DUAL;--STR : 0.4 --STR2 : 4 FM9990.99의 의미9는 해당 자리의 숫자를 의미하고 값이 없을 경우 소수점 이상은 공백으로 소수점 이하는 0으로 표시한다.0은 해당 자리의 숫자를 의미하고 값이 없을 경우 0으로 표시하며 숫자의 길이를 고정적으로 표시 할 때 주로 사용한다.FM은 좌우 9로 ..
쿼리(Query)문을 작성하다 보면 오라클에서 제공하는 함수만으로 작성 시 쿼리문이 복잡해 지거나 불가능한 경우도 있다.오라클에서 제공한는 JAVA SOURCE 기능을 사용하면 Java 클래스 생성, 실행이 가능하다. 이 기능을 사용하면 일반 어플리케이션에서 가능한 많은 기능들을 PL/SQL에서 할 수 있을 것이다. 자바(Java) 클래스 생성 자바(Java) 클래스 내부함수 호출을 하는 오라클 함수 생성 1. 자바(Java) 클래스를 생성한다. /* JAVA Class를 생성한다 */CREATE OR REPLACE and RESOLVE JAVA SOURCE NAMED "HelloWorld" AS /*파일명*/ import java.lang.*; import java.io.*; public class H..
오라클(Oracle)에서는 ISNUMERIC(숫자확인) 함수가 없다. 직접 사용자함수를 만들어서 사용하거나 제공하는 다른 함수를 사용하여 값이 숫자인지 확인을 할 수 있다.다음 세 가지 방법을 이용하여 숫자여부를 확인할 수 있다. 방법1. REGEXP_INSTR (정규식 문자열 검색 함수, Oracle 10g 이상 사용가능) - REGEXP_INSTR([숫자값],'[^0-9]') = 0 - 숫자가 아닌 값의 위치를 반환. 반환 값이 없으면 모든 문자가 숫자임방법2. TRANSLATE (문자열 치환 함수, Oracle 8i 이상 사용가능) - TRANSLATE([숫자값],'A1234567890','A') IS NULL - 숫자를 찾아 치환 후 남은 문자가 존재 시 숫자가 아님방법3. 사용자 정의 함수 생성..