12. 날짜 변환 함수, BETWEEN A AND B

 

SELECT ENAME "사원명", JOB "직종명", HIREDATE "입사일"
  FROM TBL_EMP
 WHERE HIREDATE = '1981-09-28';
-- 가능하지만(오라클의 자동변환으로 인해서) 믿으면 안된다.

그래서 날짜 변환 함수를 사용해야 한다.

 

TO_DATE()

SELECT ENAME "사원명", JOB "직종명", HIREDATE "입사일"
  FROM TBL_EMP
 WHERE HIREDATE = TO_DATE('1981-09-28', 'YYYY-MM-DD');

SELECT ENAME "사원명", JOB "직종명", HIREDATE "입사일"
  FROM TBL_EMP
 WHERE HIREDATE >= TO_DATE('1981-09-28', 'YYYY-MM-DD');
  • 오라클에서는 날짜 데이터에 대한 크기 비교 가능
  • 과거보다 미래를 더 큰 값으로 간주

 

BETWEEN ⓐ AND ⓑ

SELECT ENAME "사원명", JOB "직종명", HIREDATE "입사일"
  FROM TBL_EMP
 WHERE HIREDATE BETWEEN TO_DATE('1981-04-02', 'YYYY-MM-DD')
										AND TO_DATE('1981-09-28', 'YYYY-MM-DD');
-- 1981년 4월 2일과 1981년 9월 28일 사이

SELECT *
  FROM TBL_EMP
 WHERE ENAME BETWEEN 'C' AND 'S';
-- 문자열도 가능(사전식)
  • BETWEEN ⓐ AND ⓑ는 날짜형, 숫자형, 문자형 데이터 모두에 적용된다
  • 단, 문자형일 경우 아스키코드 순서(사전식 배열)를 따르기 때문에 대문자가 앞쪽에 위치하고 소문자가 뒤쪽에 위치한다.
  • 또한 BETWEEN ⓐ AND ⓑ 는 해당 구문이 수행되는 시점에서 오라클 내부적으로는 부등호 연산자의 형태로 바뀌어 연산 처리된다.

 

SELECT ENAME, JOB, SAL
  FROM TBL_EMP
 WHERE JOB = 'SALESMAN'
    OR JOB = 'CLERK';

SELECT ENAME, JOB, SAL
  FROM TBL_EMP
 WHERE JOB IN ('SALESMAN', 'CLERK');

SELECT ENAME, JOB, SAL
  FROM TBL_EMP
 WHERE JOB = ANY ('SALESMAN', 'CLERK');
  • 위에 3가지 유형의 쿼리문은 모두 같은 결과를 반환
  • 하지만, 맨 위의 쿼리문(OR)이 가장 빠르게 처리된다.
  • 밑에 둘은 내부적으로 OR 구조로 변경되어 연산 처리된다.

 


https://www.instagram.com/p/CaURIEbLTtN/?utm_source=ig_web_copy_link

부족하거나 잘못된 내용이 있을 경우 댓글 달아주시면 감사하겠습니다.

이 글에 부족한 부분이 존재할 경우 추후에 수정될 수 있습니다.


 

'SQL > Oracle' 카테고리의 다른 글

14. COMMIT / ROLLBACK, DML구문  (0) 2022.03.07
13. LIKE, %, _  (0) 2022.03.07
11. UPPER(), LOWER(), INITCAP()  (0) 2022.03.07
10. NVL, COALESCE, 컬럼연결(결합)  (0) 2022.03.06
9. 컬럼 구조의 추가 및 제거  (0) 2022.03.05