본문 바로가기
DB/SQLPLUS

[ORACLE] sqlplus 연산자, Esecape 문자

by KhyeonS 2022. 6. 12.

이번엔 연산자와 Escape문자 에 대해서 알아 볼 것 이다.


데이터 베이스에서 연산자는 전에 다룬

between A and B, in(A, B) 를 포함해서

=, ==, !=, <, >, and, or , between a and b, in(a, b), like~, not like~, is null, is not null 이런 것 들이 있다.

=, ==, <, >, 이연산자는 익히 봐오던 연산자라서 설명은 생략하고

!=, 이 연산자는 부정의 의미를 갖는다. 

like는 포함을 시킨다는 의미를 갖고 not like 는 제외 하는 의미를 갖는다.

like와 not like는 대소문자를 구분해서 사용해야 한다.!

is null은 null값을 가진다라는 의미 is not null은 null 값이 아니다 라는 의미이다.

※이 연산자들은 where 절이나 having절에 조건을 줄때 쓰인다.

 

다음으로 연산자들과 자주 같이 쓰이는 Escape 문자

Escape 문자
 %는 특수기호인데 데이터 내에 있는 특수기호 %를 쿼리하거나 퍼센트 %를 표시한다면 \ 뒤에 %기호를 쓰면 된다. 이런 \를 Escape 문자라고 해서 ESCAPE '\'를 써서 밝혀주면 된다. 홍길동은 '홍*동', '김*숙'식으로 데이터가 있을 때 쿼리하는 기법에서 사용된다. '홍\*동', '\n', '\t', '93.2\%' <= '95.2%'

 

'%'는 주로 문자를 포함 시킬때 많이 쓰인다. 

'___' 언더바는 주로 몇 자리에 문자열에 결과값을 원한다 라고 가정하면 _____ 이처럼 언더바를 5개를 써줘서 문자열이 5자인 결과값만 가져오는 조건을 줄때 쓰인다.

 

예제를 이용해서 알아 보자면.


job_id 별로 총 급여를 구하는데 job_id가 MAN이 포함된 곳만   보이시오 라고 한다면

select job_id, sum(salary) from employees
group by job_id
having job_id like '%MAN';

 

이렇게 써준다면 

이렇게 MAN이 보함된 부서의 급여 합만 나오게 된다. 

여기서 주의 할점은 %의 위치를 주의 해야 한다.

만약 %위치에 따라 MAN이 뒤에 붙는 부서명을 원한다면 '%MAN'이렇게 쓰지만

앞에 MAN이 붙는 부서명을 원한다면 'MAN%'이렇게 %에 위치에 따라 쿼리 결과 값이 달라진다.


또 다른 예로 first_name이 3글자이면서 x로 끝나는 직원만 보이시오 라고 한다면

select first_name from employees
where first_name like '__x';

이렇게 언더바를 2개 써주고 x를 써준다면 3글자이면서 마지막 문자열이 x인 사원만 나오게 된다.

 


예제를 좀 어려운 문제로 들어 본다면.

job_id 별로 총 급여를 구하는데 job_id가 MAN나 MGR 는 제외하고 총급여가 100,000 불 이상인 부서를 급여 기준으로 내림차순으로 보이시오 라는 예제가 있다면 

group by 와 sum()함수, 연산자와 order by , not like , '%' 를 모두 사용해서 쿼리 해줘야 한다. 

select job_id, sum(salary) from employees
group by job_id
having job_id not like '%MAN'and job_id not like'%MGR' and sum(salary) >= '100000'
order by sum(salary) desc;

이런식으로 조건에 연산자인 and로 조건을 여러개 줘서 쿼리할 수 있을 것이다.

아니면 where 절과 having 절을 같이 사용해서 써줄수도 있다.

select job_id, sum(salary) from employees
where (job_id not like '%MGR' and job_id not like '%MAN')
group by job_id
having sum(salary) >= 100000
order by sum(salary) desc;

이런식으로 조건이 여러개 라면 where 절과 having 절을 동시에 써줄 수도 있다.

결과는 이런식으로 같은 결과가 나온다.

'DB > SQLPLUS' 카테고리의 다른 글

[ORACLE] Count () 함수  (0) 2022.06.12
[ORACLE] TRUNC, ROUND 함수  (0) 2022.06.12
[ORACLE] group by 구문, having ~절  (0) 2022.06.12
[oracle] Order by 구문  (0) 2022.06.12
[Oracle] between A and B, in(A, B) 구문  (0) 2022.06.09

댓글