[ORACLE] 특정 행 추출하기 (FETCH, ROWNUM, OFFSET, PERCENT, LIMIT, TOP)
업무를 하며 쿼리를 작성하다 보면 페이징 처리를 하거나 제한해서 데이터를 추출해야 하는 상황에 주로 ROWNUM을 활용했었는데, 이번에 FETCH 구문을 활용하는 방법을 알게 되었다.보통 ROWNUM을 활용하여 데이터를 추출하려면 정렬한 쿼리를 서브쿼리로 감싸야 하는데, FETCH 구문을 활용하면 좀 더 간결하게 쿼리를 작성할 수 있어 종종 활용하게 될 것 같고, 사실 ROWNUM과 FETCH 구문 외에도 TOP, LIMIT 등 데이터를 추출하는 방법이 많은데, 다 숙지해뒀다가 다양한 상황 및 조건에 맞춰 유연하게 쿼리를 작성할 수 있는 사람이 되어아겠다. * FETCH 구문의 경우 ORACLE 12c 버전부터 사용 가능 FETCH 구문SELECT [컬럼명] FROM [테이블명] ORDER BY [컬럼..
2024. 11. 2.
[ORACLE] NVL, NVL2, NULLIF, COALESCE 함수 (NULL 값 처리, 치환 등)
쿼리를 작성하다 보면 NULL 값을 그대로 사용할 수 없는 경우 NULL 값에 대한 처리를 많이 하는 편이다.NULL 값을 체크하거나 치환하는 등의 처리를 위해서는 알아두면 좋을 것 같아 정리해본다. NVL 구문 예시NVL(대상 컬럼, 대상 컬럼이 NULL 때의 값)NVL(COLUMN, 'COLUMN IS NULL') NVL2 구문 예시NVL2(대상 컬럼, 대상 컬럼이 NULL이 아닌 경우의 값, 대상 컬럼이 NULL일 경우의 값)NVL2(COLUMN, 'COLUMN IS NOT NULL', 'COLUMN IS NULL') NULLIF 구문 예시NULLIF(대상 컬럼, 비교할 컬럼)NULLIF(COLUMN1, COLUMN2) > COLUMN1와 COLUMN2의 값이 같다면 NULL 반환 > COLUM..
2024. 8. 3.
[ORCALE] DECODE 함수 (SQL로 IF ELSE 구문 사용하기)
쿼리를 작성하다 보면 생각보다 많이 사용하게 되는 함수가 DECODE 함수이다.복잡한 로직을 짜게 된다면 가독성을 고려하여 CASE WHEN 구문을 추천하지만,간단한 IF ELSE 로직을 처리하기 위함이라면 DECODE 함수를 활용한다면 간결하게 쿼리를 작성할 수 있다. 구문 예시DECODE(컬럼, 조건1, 결과1, 조건2, 결과2, 조건3, 결과3, ... , 조건에 해당하지 않았을 때의 값) 구문 예시-- COL1 값이 'A' 인 경우에만 'Y' 반환하고, 그 외에는 'N' 반환하기SELECT DECODE(COL1, 'A', 'Y', 'N') AS RESULT FROM TBL1-- COL1 값이 'A'이면서, COL2 값이 '9' 인 경우에 'Y' 반환하고, 그 외에는 'N' 반환하기SELECT ..
2024. 8. 3.
[PostgreSQL] GENERATE_SERIES 사용 예시 (범위 안의 일련의 값 생성)
GENERATE_SERIES이란?일련의 값을 지정된 간격으로 생성해주는 함수입니다.값 사이의 간격과 단계는 사용자가 정의할 수 있습니다. 구문start : tinyint, smallint, int, bigint, 10진 또는 숫자 형식의 변수, 리터럴 또는 스칼라 식으로 지정stop : tinyint, smallint, int, bigint, 10진 또는 숫자 형식의 변수, 리터럴 또는 스칼라 식으로 지정step : tinyint, smallint, int, bigint, 10진 또는 숫자 유형. step은 음수 또는 양수일 수 있지만 0(0)일 수는 없음GENERATE_SERIES ( start , stop [ , step ] ) 사용 예시1부터 10 사이의 정수 값 반환-- ex 1SELECT ..
2024. 7. 21.
[ORACLE] GREATEST, LEAST 함수 (하나의 행에서 최대값, 최소값 구하기)
흔히들 알고 있는 MAX, MIN 함수는 하나의 컬럼의 값(열 단위, COLUMN) 중에서 최대값, 최솟값을 구하는 함수이다.마찬가지로 이번에 알아볼 GREATEST, LEAST 라는 함수도 최대값, 최소값을 구하는 함수이다.다만, 하나의 행(열거 리스트)에서 여러 컬럼의 값(행 단위, ROW)을 비교한다는 점에서 차이가 있다. MAX(COLUMN) : 대상 컬럼에서의 최대값 (열 단위, COLUMN)MIN(COLUMN) : 대상 컬럼에서의 최소값 (열 단위, COLUMN)GREATEST(expr1, expr2, ... ) : 대상 행(열거 리스트)에서의 최대값 (행 단위, ROW)LEAST(expr1, expr2, ... ) : 대상 행(열거 리스트)에서의 최소값 (행 단위, ROW)GREATEST/L..
2024. 3. 26.