본문 바로가기
DataBase

[Oracle] 페이징, concat 등 표현

by 작심평생 2019. 6. 2.

오라클은 12버전부터 offset과 limit가 추가됨 (내가 작업하는 환경은 11버전이라,,,,직접 구현해야한다.. 업데이트 해주세여 ㅠㅠㅠㅠ헝)


<12 이전 버전>

이렇게 한 번 더 감싸주는 이유는 Between보다 빠른 검색을 위해. 해당 범위만큼만 번호를 매겨서 제공하는 방식인셈. between은 전부 번호 지정 후 제공


SELECT *

FROM (

    SELECT a.*, ROWNUM AS "rnum"

    FROM (

        <사용자 정의 쿼리 QUERY>

    ) a

    WHERE ROWNUM <= end_number

) a

WHERE rnum >= start_number


한번 더 감싸주는 상세 이유 : https://okky.kr/article/282926



<12 이후 버전>


SELECT *

FROM table_name

ORDER BY column_name

OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY;







문자열을 합쳐서 보여주는 경우는 연결 연산자 || 나 연결 함수 CONCAT을 사용



SELECT first_name||family_name AS fullName  FROM emp

SELECT CONCAT(first_name,family_name) AS fullName  FROM emp


하지만 단 두개의 문자열에 대해서만 연결이 가능하다는 단점. 

여기서 3개 이상의 문자열을 합치려면 CONCAT함수를 CONCAT 함수로 감싸줘야한다.

SELECT CONCAT(CONCAT(first_name,family_name),salary) AS mix  FROM emp




NVL(expr1, expr2) 함수는 expr1이 null 이 아니면 expr1을 그대로 반환하고, null 이면 expr2을 반환


오라클에서 길이가 없는 문자열(aka empty string, white space, blank)null 로 취급된다.

즉, 필드에 들어있는 값이나 '' 문자 또는 함수가 반환하는 값이 길이가 없는 문자열이라면 null 로 취급된다는 것




출처

https://yjacket.tistory.com/60





++ count(*) == count(1) 과 같은 뜻











'DataBase' 카테고리의 다른 글

[HackerRank] Ollivander's Inventory  (0) 2020.07.12
[HackerRank] Symmetric Paris  (0) 2020.06.10
관계형데이터베이스(RDBMS)별Merge 정리  (0) 2020.03.13
INSERT문에 SELECT 가능!  (0) 2019.06.02
[MySQL] 페이징 시 쿼리 LIMIT, OFFSET  (0) 2019.06.02

댓글