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 구조로 변경되어 연산 처리된다.
부족하거나 잘못된 내용이 있을 경우 댓글 달아주시면 감사하겠습니다.
이 글에 부족한 부분이 존재할 경우 추후에 수정될 수 있습니다.
'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 |