p.155, 156에서
order by dept_id || emp_nm desc;
두 컬럼을 한꺼번에 내림차순하고 싶으면 || (or) 연산자를 사용한다고 나오는데요.
오름차순 / 내림차순을 할 때, 두 컬럼을 동시 적용하는 건 의미가 없을 듯 합니다.
결국 한 컬럼 기준으로 오름/내림차순이 되기 때문에 156페이지에서도
dept_id 기준으로 내림차순이 된 것으로 보입니다.
정렬 시 null은 dbms 마다 차이가 있는데요.
책에서는 oracle 기준으로 내림차순 시 null이 맨 위에 나온 것 같습니다.
안녕하세요.
좋은 질문 감사합니다. 세 가지로 나누어 답변드리겠습니다.
먼저 ||는 OR 연산자가 아니라 두 문자열을 이어 붙이는 연결 연산자입니다(CONCAT과 동일).
따라서 dept_id || emp_nm은 두 컬럼을 하나의 문자열로 합치고,
ORDER BY는 그 합쳐진 단일 문자열을 기준으로 정렬합니다.
이 점을 이해하시면 '두 컬럼 동시 정렬은 의미가 없지 않나'라는 의문도 풀립니다.
말씀하신 대로 정렬 기준을 개별 컬럼으로 나누어 쓰는 것(ORDER BY dept_id DESC, emp_nm DESC)이 정석입니다.
다만 || 방식은 두 컬럼을 하나로 묶어 한꺼번에 정렬하고 싶을 때 쓰는 방법으로,
다른 교재에는 잘 없지만 실무에서 여러 컬럼을 묶어 정렬할 때 유용하게 쓰입니다.
NULL 처리도 정확히 보셨습니다. NULL의 정렬 위치는 DBMS마다 다르며, 책은 오라클 기준입니다.
오라클은 내림차순 시 NULL을 맨 위에 표시하므로 156페이지에서도 NULL이 상단에 나온 것입니다.
질문 감사합니다.
-
서*재2026-08-10 13:24:49
안녕하세요.
좋은 질문 감사합니다. 세 가지로 나누어 답변드리겠습니다.
먼저 ||는 OR 연산자가 아니라 두 문자열을 이어 붙이는 연결 연산자입니다(CONCAT과 동일).
따라서 dept_id || emp_nm은 두 컬럼을 하나의 문자열로 합치고,
ORDER BY는 그 합쳐진 단일 문자열을 기준으로 정렬합니다.
이 점을 이해하시면 '두 컬럼 동시 정렬은 의미가 없지 않나'라는 의문도 풀립니다.
말씀하신 대로 정렬 기준을 개별 컬럼으로 나누어 쓰는 것(ORDER BY dept_id DESC, emp_nm DESC)이 정석입니다.
다만 || 방식은 두 컬럼을 하나로 묶어 한꺼번에 정렬하고 싶을 때 쓰는 방법으로,
다른 교재에는 잘 없지만 실무에서 여러 컬럼을 묶어 정렬할 때 유용하게 쓰입니다.
NULL 처리도 정확히 보셨습니다. NULL의 정렬 위치는 DBMS마다 다르며, 책은 오라클 기준입니다.
오라클은 내림차순 시 NULL을 맨 위에 표시하므로 156페이지에서도 NULL이 상단에 나온 것입니다.
질문 감사합니다.