[DATABASE/ORACLE] REGEXP_SUBSTR, REGEXP_COUNT 함수를 사용해 IN절 동적 사용 구현하기
Database/Oracle 2017. 11. 25. 19:39728x90
반응형
728x170
■ REGEXP_SUBSTR, REGEXP_COUNT 함수를 사용해 IN절 동적 사용을 구현하는 방법을 보여준다.
▶ 예제 코드 (SQL)
WITH TEST_TABLE AS
(
SELECT '고구려' COUNTRY, '1대' ST, '동명성왕' KING_NM FROM DUAL UNION ALL
SELECT '고구려' COUNTRY, '3대' ST, '대무신왕' KING_NM FROM DUAL UNION ALL
SELECT '백제' COUNTRY, '1대' ST, '온조왕' KING_NM FROM DUAL UNION ALL
SELECT '고구려' COUNTRY, '2대' ST, '유리왕' KING_NM FROM DUAL UNION ALL
SELECT '백제' COUNTRY, '3대' ST, '기루왕' KING_NM FROM DUAL UNION ALL
SELECT '신라' COUNTRY, '2대' ST, '남해왕' KING_NM FROM DUAL UNION ALL
SELECT '신라' COUNTRY, '1대' ST, '박혁거세' KING_NM FROM DUAL UNION ALL
SELECT '백제' COUNTRY, '2대' ST, '다루왕' KING_NM FROM DUAL UNION ALL
SELECT '신라' COUNTRY, '3대' ST, '유리이사금' KING_NM FROM DUAL
)
SELECT *
FROM TEST_TABLE
WHERE COUNTRY IN
(
SELECT REGEXP_SUBSTR('백제/신라', '[^/]+', 1, LEVEL)
FROM DUAL
CONNECT BY LEVEL <= REGEXP_COUNT('백제/신라', '/') + 1
)
ORDER BY COUNTRY, ST;
/*
COUNTRY ST KING_NM
------- --- ----------
백제 1대 온조왕
백제 2대 다루왕
백제 3대 기루왕
신라 1대 박혁거세
신라 2대 남해왕
신라 3대 유리이사금
*/
※ Oracle 11g 이상 버전에서 사용 가능하다.
728x90
반응형
그리드형(광고전용)
'Database > Oracle' 카테고리의 다른 글
[DATABASE/ORACLE] 시간 더하기/빼기 (0) | 2017.11.25 |
---|---|
[DATABASE/ORACLE] 특정일 기준으로 해당 주(WEEK)의 모든 날짜 구하기 (0) | 2017.11.25 |
[DATABASE/ORACLE] WM_CONCAT 함수 : 여러 행의 데이터를 한 컬럼으로 합치기 (0) | 2017.11.25 |
[DATABASE/ORACLE] XMLAGG, XMLELEMENT 함수를 사용해 여러 행의 데이터를 한 컬럼으로 합치기 (0) | 2017.11.25 |
[DATABASE/ORACLE] INSTR 함수 : IN절 동적 사용 구현하기 (0) | 2017.11.25 |
[DATABASE/ORACLE] 숫자 체크하기 (0) | 2017.11.25 |
[DATABASE/ORACLE] REGEXP_LIKE 함수 : 다중 LIKE 사용하기 (0) | 2017.11.25 |
[DATABASE/ORACLE] NVL 함수 : NULL 값 치환하기 (0) | 2017.11.25 |
[DATABASE/ORACLE] NVL2 함수 : NULL 값 치환하기 (0) | 2017.11.25 |
[DATABASE/ORACLE] LPAD 함수 : 일정 길이 문자열을 구하기 위해 왼쪽부터 특정 문자 채우기 (0) | 2017.11.25 |
댓글을 달아 주세요