반응형

[DB2] Select에서 자주 사용하는 함수들
DB2에서 Selecct시 자주 사용하는 수치관련 함수 몇가지
SELECT
A.F1, A.F2, A.F3, A.F4
, ROUND(A.F3, 0) AS F3_RND
, FLOAT(A.F4)+1000 AS F4_FLOAT
, TO_CHAR(CURRENT TIMESTAMP, 'YYYYMMDDHH24MISS') AS NOW_DATETIME
, RANK() OVER(PARTITION BY A.F1 ORDER BY F3 asc) AS rnk
, DENSE_RANK() OVER(PARTITION BY A.F1 ORDER BY F3 asc) AS rnkDS
, ROW_NUMBER() OVER(PARTITION BY A.F1) AS rowno
, MOD(F5, 12) AS VMOD
-- SUM은 안된다. PARTITION BY 는 "RANK", "DENSE_RANK", "ROW_NUMBER" 3가지만 허용된다. -_-
-- , SUM(A.F3) OVER(PARTITION BY A.F1) as HAP
FROM
(
SELECT '1' F1, '1' F2, 15.41 F3, '15.41' F4, 100 F5 FROM SYSIBM.SYSDUMMY1 UNION ALL
SELECT '1' F1, '2' F2, 15.45 F3, '15.45' F4, 12 F5 FROM SYSIBM.SYSDUMMY1 UNION ALL
SELECT '1' F1, '3' F2, 15.46 F3, '15.46' F4, 24 F5 FROM SYSIBM.SYSDUMMY1 UNION ALL
SELECT '2' F1, '1' F2, 15.50 F3, '15.50' F4, 36 F5 FROM SYSIBM.SYSDUMMY1 UNION ALL
SELECT '2' F1, '2' F2, 15.51 F3, '15.51' F4, 50 F5 FROM SYSIBM.SYSDUMMY1 UNION ALL
SELECT '2' F1, '3' F2, 15.61 F3, '15.61' F4, 100 F5 FROM SYSIBM.SYSDUMMY1
) A
;
Oracle의 NVL과 같은 펑션
NVL(DEPTNO, '1') → COALESCE(DEPTNO,'1')
엔터값 변경 (줄바꿈 제거)
SELECT REPLACE(REPLACE(A.TXT, CHR(13), ' '), CHR(10), '') AS TXT
FROM ( SELECT 'ABCDE' AS TXT
FROM SYSIBM.SYSDUMMY1
) A
;
반올림
SELECT ROUND(3999/100.0, 0)
FROM SYSIBM.SYSDUMMY1
;
-- 뒤 숫자는 소수이하 반올림 할 자릿수(0이면 정수가 나온다)
치환
SELECT REPLACE('ABC11DEFG', '1', 'X') AA -- 1을 모두 X로 치환(변경/수정)한다.
FROM SYSIBM.SYSDUMMY1
;
일시
SELECT TO_CHAR(CURRENT TIMESTAMP, 'YYYYMMDDHH24MISS')
FROM SYSIBM.SYSDUMMY1
;
-- 뒤 숫자는 소수이하 반올림할 자릿수(0이면 정수가 나온다)
기본조회
Select 사용시 테이블락(Table Lock) 조심. (DB2는 기본이 락이 된다고 한다.)
아래의 조회는 상위 10개를 락없이 조회하는 쿼리이다.
select *
from db2admin.L2022
where idx_date >= '20221201'
fetch first 10 rows only
FOR READ ONLY WITH UR
;
-- fetch first 10 rows only: 상위 10개만 조회
-- FOR READ ONLY WITH UR: 락 없이 조회
LPAD
SELECT LPAD('123', 5, ' ') AA
FROM SYSIBM.SYSDUMMY1
;
-- 결과 " 123"으로 조회된다. 오라클의 LPAD와 동일함.
RowNum
SELECT ROW_NUMBER() OVER (ORDER BY A.CUSTCD, A.CUSTVAL DESC, A.CUSTNM) AS RNO
FROM 테이블명
;
-- 행번호를 조회한다. 위 정렬순서로..
월 증가
SELECT ADD_MONTHS(DATE('2022-2-28'), 4) MONTHS
FROM SYSIBM.SYSDUMMY1
;
SELECT ADD_MONTHS('2022-2-28', 4) MONTHS
FROM SYSIBM.SYSDUMMY1
;
SELECT DATE('2022-2-28') + 4 MONTHS
FROM SYSIBM.SYSDUMMY1
;
말일 구하기 (해당월의 말일 조회)
SELECT LAST_DAY(DATE('2022-12-10'))
FROM SYSIBM.SYSDUMMY1
;
반응형