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
'IT_STUDY > SQLD' 카테고리의 다른 글
[ SQLD ] 조건문(DECODE,CASE),집계함수,GROUP,JOIN,서브쿼리 (0) | 2024.03.01 |
---|---|
[ SQLD ] NULL, 정렬, 숫자함수, 문자함수, 날짜함수 (0) | 2024.03.01 |
[ SQLD ] SQL 연산 / Alias / CONCAT / IN / LIKE / NOT (0) | 2024.02.07 |
[ SQLD ] 데이터 모델과 성능 (2) (0) | 2024.02.05 |
[ SQLD ] 데이터 모델과 성능 (1) (1) | 2024.02.05 |