반응형

# [DB2 SQL] 현재일자 기준 차이 구하기 (년, 월, 일)

  • DB2 에서는 현재일자를 CURRENT_DATE 로 가져올수 있다.
  • 오라클의 경우 SYSDATE 로 현재일자를 가져올수 있다.

## DB2 현재일자 기준 년, 월, 일 차이 구하기

  • DUAL의 경우 가상 테이블
  • 현재일자 기준 1년전, 1개월전, 1일전을 아래와 같이 구할수 있다.
SELECT (CURRENT_DATE - 1 YEAR) AS DIFF_YEAR
	, (CURRENT_DATE - 1 MONTH) AS DIFF_MONTH
	, (CURRENT_DATE - 1 DAY) AS DIFF_DAY
FROM DUAL;
반응형
반응형

# LISTAGG

  • 여러 로우값을 하나의 컬럼으로 가져오고자 할때 사용.
  • 오라클 11g 이상만 사용 가능.
  • VARCHAR2 로 4000을 넘으면 잘림.

## 기본문법

LISTAGG(컬럼명, '구분기호')
WITHIN GROUP (ORDER BY 정렬기준 컬럼)

## 사용예시

SELECT LISTAGG(컬럼A, '<br>')
WITHIN GROUP (ORDER BY 컬럼A) AS COLA
FROM DUAL;
  • 구분기호에는 br, ,(콤마) 등 입력 가능.
  • 출력해보면 한 컬럼에 구분기호로 구분된 컬럼이 나열된것을 확인할수 있다.

 

반응형
반응형

# 오라클 소수점 처리

  • 프로젝트를 하다보면 고객의 요청에 따라 0.7 같이 소수점을 표시 해서 보여줘야 하는 경우가 존재한다.
  • 간혹 소수점을 표시하여 처리하는 경우 .5 등의 표시 오류가 발생하는데, 이를 해결하는 방법은 TO_CHAR 와 FM 을 사용하는것이다.

## FM990.99

  • 사용방법 : TO_CHAR(표시할숫자, 'FM990.99')

FM

  • 좌우 9로 치환된 소수점 이상의 공백 및 소수점 이하의 0 제거.
  • FM 이 없는 경우 : 소수점 이상의 숫자는 공백, 소수점 이하의 숫자는 0으로 표시

9

  • 해당 자리의 숫자. (가변길이)
  • 값이 없는경우 소수점 이상 : 공백 으로 표시.
  • 값이 없는경우 소수점 이하 : 0 으로 표시.
  • 0이거나 숫자가 존재하지 않으면 값을 버림.

0

  • 해당 자리의 숫자. (고정길이)
  • 값이 없는경우 : 0으로 표시.
  • 고정적으로 숫자의 길이를 표시할 경우 사용한다.
  • 숫자의 길이를 맞추고 싶을때 길이만큼 0을 추가.

## 사용 예시

SELECT '0.5' AS A  -- 0.05표시
    , TO_CHAR('0.05', '999,999') AS B  -- 0표시
    , TO_CHAR('0.05', '999.999') AS C  -- .050표시
    , TO_CHAR('0.05', 'FM999.99') AS D  -- .05표시
    , TO_CHAR('0.05', 'FM990.99') AS E  -- 0.05표시
    , TO_CHAR('0.05', 'FM900.99') AS F  -- 00.05표시
    , TO_CHAR('0.05', 'FM990.990') AS G  -- 0.050표시
    , TO_CHAR('0.05', 'FM990.9900') AS H  -- 0.0500표시
FROM DUAL;
반응형
반응형

# 오라클 트리거 :NEW 값 변경 (BEFORE)

  • 트리거에서 :NEW.특정값 을 변경해야 하는 경우도 존재.
  • AFTER에서 동작하는 트리거에 :NEW.특정값 을 변경하는 코드를 넣고 돌리면 오류가 발생한다.
  • BEFORE에서 동작하는 트리거에 :NEW.특정값을 변경하는 코드를 넣고 돌리면 오류없이 정상 작동한다.
  • 아래 트리거 생성 코드의 경우 테이블의 특정값이 UPDATE 되기 전에 수행되는 트리거로 BEGIN ~ END 에서 :NEW .테이블의 특정값 을 변경해준다.
CREATE OR REPLACE TRIGGER 트리거명
BEFORE UPDATE OF 테이블의특정값 ON 테이블명 FOR EACH ROW
DECLARE
	변수 등 선언;
BEGIN

	:NEW.테이블의특정값 := 변경할값;

END;
/

 

반응형

'메모장' 카테고리의 다른 글

DB2, 오라클 피벗 관련 LISTAGG  (0) 2022.10.25
오라클 .5 표현 처리 (TO_CHAR, FM)  (0) 2022.09.28
오라클 트리거 조회 (트리거 활성 상태 등)  (0) 2022.09.20
오라클 PL/SQL LOOP문  (0) 2022.09.19
오라클 PL/SQL IF문  (0) 2022.09.17

+ Recent posts