[Oracle] 페이징, concat 등 표현
오라클은 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) 과 같은 뜻