오라클에서 현재날짜 / 현재시간을 나타내주는 시스템함수는 SYSDATE, SYSTIMESTAMP함수입니다. 현재날짜 구하기 (SYSDATE, SYSTIMESTAMP) SELECT SYSDATE, SYSTIMESTAMP FROM DUAL 오라클에서 SYSDATE,와 SYSTIMESTAMP를 입력하기만 하면 위와같은 형태로 날짜가 출력됩니다. 위 데이터 포맷은 기본데이터 포맷으로 리턴한 값이므로 환경에따라 다를 수 있습니다. SYSDATE와 SYSTIMESTAMP함수는 리턴하는 타입이 서로 다릅니다. SYSDATE DATE형태로 리턴하고 SYSTIMESTAMP함수는 TIMESTAMP타입으로 리턴됩니다. 두 타입간의 차이점은 아래 표와 같습니다. 데이터타입 설명 DATE BC 4712년 1월 1일부터 9999..
대부분의 개발 언어에서는 %로 나머지계산을 합니다. 하지만 오라클에는 %연산자가 존재하지 않습니다. 그러므로 나머지값을 구하기 위해서는 나머지를 구해주는 함수를 사용하시는것이 좋습니다. 오라클에서 나머지를 구하는 함수는 MOD, REMAINDER함수가 있습니다. 오라클 나머지 함수(MOD, REMAINDER) 사용법 --사용법(대상 값, 나눌 값) MOD(n2,n1) REMAINDER(n2,n1) --예제 SELECT MOD(10,3), REMAINDER(10,3) FROM DUAL MOD함수와 REMAINDER함수의 차이점 두 함수는 오라클에서 모두 나머지를 구하는 함수이고 두번째 인자가 첫번째 인자값을 나눈 나머지를 반환한다는 점에서 사용법까지 완전히 일치합니다. 하지만 두 함수는 나머지를 구하는 내..
제곱구하기 POWER(n1, n2) --사용법 POWER(대상숫자, 제곱숫자) --예제 SELECT POWER(5,2), POWER(5,-3), POWER(-5,3), POWER(5,3.1) FROM DUAL POWER함수는 첫번째 인자를 두번째 인자만큼 제곱한 결과를 반환합니다. 위와 같이 정수와 실수 모두 올 수 있습니다. 단. 첫번째 인자값이 음수일경우에는 실수를 제곱할 수 없습니다. EX : POWER(-5,3.01) 같은 연산은 할 수 없습니다. 제곱근 구하기 SQRT(n) --사용법 SQRT(대상숫자) --예제 SELECT SQRT(9), SQRT(5.4) FROM DUAL SQRT함수는 인자값의 제곱근을 반환합니다. 인자값으로는 양의자리 정수와 실수만 올 수 있습니다. EX : SQRT(-5..
오라클에서 절대값을 구하는 함수는 ABS입니다. 총 매출같이 음수의 금액도 양수로 바꿔서 계산해야할 경우가 종종 있는데 이때 유용하게 사용될 수 있는 함수입니다. 절대값 함수 ABS 사용법 --사용법 ABS(숫자) --예제 SELECT ABS(100), ABS(-100), ABS(-100.15) FROM DUAL ABS함수는 숫자를 매개변수로 받아 매개변수로 받은 숫자의 절대값을 반환해주는 함수입니다.
갸끔 요구사항으로 자릿수를 일정하게 맞춰달라는 요구가 종종 있습니다. 이럴때 오라클에서 유용하게 사용할 수 있는 함수는 LPAD, RPAD함수입니다. LPAD, RPAD함수는 n자리만큼 왼쪽, 오른쪽 부터 채워서 반환하는 문자열 함수입니다. LPAD, RPAD 본래 용도는 문자열 삽입을 주 용도로 사용하지만. 자릿수를 일정하게 맞추는 용도로도 사용할 수 있습니다. LPAD, RPAD 함수 사용법 LPAD(expr1, n, expr2) --왼쪽에서부터 문자열 채우기 RPAD(expr1, n, expr2) --오른쪽에서부터 문자열 채우기 LPAD, RPAD함수는 매개변수로 들어온 expr2문자열을 n자리만큼 왼쪽 / 오른쪽부터 채워넣어 expr1을 반환하는 함수입니다. n은 총 자릿수를 의미합니다. 자릿수 ..
오라클 가끔씩 데이터에 공백이 들어가는 경우가 있습니다. 이럴 경우 공백이 들어가는 문제점을 찾아 수정하는것이 가장 좋지만 그것이 어렵다면 오라클 TRIM함수를 사용하여 공백을 제거하는 방법도 사용할 수 있습니다. 오라클에서 공백제거는 TRIM, LTRIM, RTRIM함수를 통해서 제거할 수 있습니다. 또 LTRIM, RTRIM함수는 문자열에서 공백을 제거할때도 유용하게 사용할 수 있지만 문자열에서 특정 문자를 제거하는데도 사용할 수 있습니다. 왼쪽에서부터 문자 / 공백제거 LTRIM 함수 --사용법 (문자열,제거문자) LTRIM(STR,TARGET_STR) --예제 WITH EXAMPLE AS( SELECT ' BLANK ' AS STR1, 'ABCDEF' AS STR2 FROM DUAL ) SELEC..
오라클에서 대소문자를 가려주는 함수들이 있습니다. UPPER(대문자로 변환), LOWER(소문자로 변환), INITCAP(첫글자만 대문자로 나머지는 소문자로 변환) 이번 포스팅에서는 이 3가지 함수들의 사용법에 대해 알아보도록 하겠습니다. 대문자로 치환 (UPPER) --사용법 UPPER(문자열) --예제 SELECT UPPER('i am software developer') FROM DUAL UPPER 함수는 매개변수로 들어오는 문자열을 대문자로 변환해주는 함수입니다. 소문자로 치환(LOWER) --사용법 LOWER(문자열) --예제 SELECT LOWER('I AM SOFTWARE DEVELOPER') FROM DUAL LOWER함수는 매개변수로 들어오는 문자열을 소문자로 변환해주는 함수입니다. 첫글..
오라클에서 문자열을 치환하는 함수는 REPLACE와 TRANSLATE가 있습니다. 하지만 둘의 사용용도는 전혀 다릅니다. REPLACE함수의 경우 일반적인 문자열 치환함수라고 생각하면 되고 TRANSLATE는 일종의 치환규칙을 정하는 함수라고 생각하시면 됩니다. 대부분 REPLACE를 많이쓰고 TRANSLATE는 거의 쓰이지는 않습니다만. TRANSLATE함수도 유용하게 쓰일 수 있는 용도가 분명있습니다. 이 용도는 아래에서 설명하겠습니다. 문자열 치환 REPLACE 함수 --사용법(문자열, 바꿀문자열, 바뀔문자열) REPLACE(STR, TARGET_STR, REPLACE_STR) SELECT REPLACE('내가 그린 기린 그림은 잘 그린 기린 그림이다','기린','사자') FROM DUAL --결과..
자바를 비롯한 대부분의 언어의 문자열은 + 라는 연산자를 활용하여 이어붙입니다. 하지만 오라클은 + 기호를 문자열에 사용할 수 없습니다. 오라클에서 +기호는 계산이 가능한 숫자형 컬럼에만 사용이 가능합니다. 문자형 타입에 + 연산을 하게되면 '수치가 부적합합니다.' 수라는 에러메시지가 출력되기에 다른 방법을 써야합니다. 문자열 합치기 연산자 ( || ) --사용법 문자열1 || 문자열2 || 문자열3......... --예제 WITH EXAMPLE AS( SELECT '코딩팩토리의 ' AS STR1, '블로그입니다.' AS STR2 FROM DUAL ) SELECT STR1, -- 문자열1 STR2, -- 문자열2 STR1 || STR2 --문자열 합치기 FROM EXAMPLE 오라클에서 문자열을 붙이려..
이번 포스팅에서는 오라클에서 문자열을 자를때 사용하는 SUBSTR()와 구분자로 자를때 구분자만큼의 위치를 리턴하는 INSTR() 함수에 대해 포스팅하겠습니다. 문자열 자르기 SUBSTR( ) 함수 --사용법(문자열, 시작위치, 길이) SUBSTR(CHAR,POS,LEN) --예제 WITH EXAMPLE AS( SELECT '동해물과 백두산이 마르고 닳도록' AS STR FROM DUAL ) SELECT SUBSTR(STR,1,4), --STR의 1번째 글자부터 4개 자르기 SUBSTR(STR,5,5), --STR의 5번째 글자부터 5개 자르기 SUBSTR(STR,10), --STR의 10번째 글자부터 끝까지 자르기 SUBSTR(STR,-7,3), --STR의 뒤에서 3번째 글자부터 3글자 자르기 SUB..
프로그래밍을 하다보면 데이터가 존재할 경우 / 존재하지 않을경우 특정 액션을 해야하는 상황이 종종 발생합니다.. 이럴때는 EXISTS를 사용하면 편리합니다. EXISTS문 사용법 SELECT 컬럼 FROM 테이블 WHERE EXISTS / NOT EXISTS (서브쿼리); EXISTS의 기본 사용법은 위와같습니다. EXISTS은 논리연산자 중의 하나로써 후행 조건절로 서브쿼리 형태로만 올 수 있습니다. EXISTS문 예제 예제 테이블 & 데이터 위와같은 MASTER DETAIL (1 : N) 테이블 구조를 가진 두개의 테이블과 만들고 데이터를 넣도록 하겠습니다. EXISTS문은 위와같은 MASTER - DETAIL (1 : N) 구조로 이루어진 테이블에서 많이 쓰입니다. 테이블에는 각각 위와같이 데이터가..
MERGE문은 테이블에 원하는 데이터가 있으면 그 데이터를 UPDATE하고 없으면 INSERT하는 구문입니다. 이 문법 PK중복 문제 해결등 각종 문제 해결에 정말 유용하게 사용되는 문법입니다. MERGE문 사용법 MERGE INTO 테이블명 USING 타겟 테이블 ON 타겟 데이터 WHEN MATCHED THEN SET 컬럼1 = 값1, 컬럼2 = 값2, ... WHERE 조건 WHEN NOT MATCHED THEN INSERT (컬럼1, 컬럼2 ...) VALUES (값1, 값2...) WHERE 조건; MERGE문의 기본 사용법은 위와 같습니다. 다른 DML보다 문법이 복잡한편이라 처음 접하면 사용하기 힘들수도 있다 생각됩니다. 이에 아래 간단한 예제를 준비했습니다. MERGE문 예제 테스트 테이블..
테이블에 있는 데이터를 삭제할때는 DELETE문을 사용합니다. 기본 사용법은 아래와 같습니다. DELETE문 기본형태 --DELETE문 DELETE FROM 테이블명 WHERE 조건; DELETE문의 사용법은 위와같습니다. 회사테이블 (COMPANY_TABLE)에 회사코드(COMPANY_CODE)가 1인 데이터삭제 DELETE FROM COMPANY_TABLE WHERE COMPANY_CODE = 1 DELETE문은 위와같은 방식으로 사용하시면 됩니다. DELETE문을 사용하실때에 WHERE절이 잘 명시되었는지 확인하셔야 합니다. WHERE절에 조건을 명시하지않으면 테이블에 있는 전체 데이터의 컬럼 값이 삭제됩니다. 데이터 변경을 실수 했을 경우 대처법 데이터 삭제 실수는 종종 일어납니다. 당황스럽겠지만..