상세 컨텐츠

본문 제목

[ SQLD ] ESCAPE / ROWNUM / TOP()

IT_STUDY/SQLD

by hyeminyy 2024. 2. 10. 22:26

본문

728x90

ESCAPE (LIKE 연산)

 - LIKE 연산으로 '%'나 '_' 가 포함된 문자를 검색하고자 할 때 사용된다.

 - '%', '_' 앞에 ESCAPE로 특수문자를 지정하면 검색할 수 있다.

 - 특수문자는 아무거나 상관없이 사용 가능하다.

 - 일반적으로 LIKE 구문을 사용하는 것 처럼 사용한다.

select pname from emp where pname like '%_%'; -- 김_하나, 박%둘, 삼, 사
select pname from emp where pname like '%%%'; -- 김_하나, 박%둘, 삼, 사

 

'%' 나 '_'가 포함된 문자열만 검색하고자 했는데 인식을 하지 못하는 상황이 발생한다.

이럴 때 사용하는 것이 ESCAPE 구문이다.

select pname from emp where pname like '%N_%' escape 'N'; -- 김_하나
select pname from emp where pname like '%G%%' escape 'G'; -- 박%둘

 

위 예제는  escape에 사용할 때 문자로 'N'과 'G'를 사용하였지만, 아무 문자나 상관 없다 !

 

구문 마지막에 escape에 사용할 문자열만 지정해주면 '_'나 '%'를 검색에 사용할 수 있게 도와준다.

 

ROWNUM

 - 오라클에서 순위가 높은  N개의 로우를 출력할 때 사용하는 명령어

 - 정렬이 완료된 후, 데이터를 출력하는게 아니라, 데이터 일부를 추출한 후 정렬작업이 일어난다.

 - ex) 급여가 높은 3명 추리기

-- 틀린 쿼리
select ename, sal
from emp
where rownum < 4
order by sal desc;
-- 처리하는 수행 순서때문에 틀린 쿼리

-- 맞는 쿼리
select ename, sal
from ( select ename, sal from emp order by sal desc) 
-- 인라인 뷰를 이용해서 데이터셋을 구성해줘야 한다.
where rownum < 4;

 

TOP()

 - sql server에서 제공하는 TOP함수는 데이터 정렬 후 원하는 데이터를 출력한다.

 - ex) 급여가 높은 2명 추리기

select top(2) ename, sal
from emp
order by sal desc;

 

 - ex) 급여가 높은 2명 추리되, 같은 급여를 받는 사람이 있다면 같이 출력

select top(2) with ties ename, sal
from emp
order by sal desc;

 - top(2) with ties 옵션은 동일 수치의 데이터를 추가로 더 추출하는 함수

728x90

관련글 더보기