※ EMP 테이블 구조
※ 변환 함수
to_char | 문자형 데이터로 변환 |
to_number | 숫자형 데이터로 변환 |
to_date | 날짜형 데이터로 변환 |
명시적 형변환 | 위의 형변환 함수를 사용 |
암시적 형변환 | 오라클이 자동으로 형변환을 수행하는 것 |
1. select ename, sal from emp where sal = 3000; 2. select ename, sal from emp where sal = '3000';
- 숫자의 우선순위가 높아서 암시적으로 문자를 숫자로 형변환 해주는 데 이것을 암시적 형변환이라고 한다. - 오라클은 암시적 형변환을 수행해 에러가 나지 않고 결과를 출력해 주지만, 성능을 느리게 한다. 따라서 가급적이면 암시적 형변환이 발생하지 않도록 쿼리문을 작성하는 것이 중요하다. - 형면환이 이루어 졌는지 알아보고 싶다면 set autot on 구문을 사용하면 내부적 수행 결과를 알 수 있다. |
1. to_char
요소 | 결과 |
YYYY | 숫자로 된 전체의 연도 |
YEAR | 영어 철자로 표기된 연도 |
MM | 월의 2자리 값 |
MONTH | 전체 월 이름 |
MON | 월의 3자 약어 |
DY | 3분자로 된 요일의 약어 |
DAY | 요일의 전체 이름 |
DD | 숫자 형식의 월간 일 |
요소 | 표기 |
년 | RRRR, RR, YYYY, YY |
월 | MM, MON |
일 | DD |
시 | hh, HH24 |
분 | MI |
초 | SS |
요일 | DAY, D |
주 | IW, WW |
# 문제 49. 이름, 입사일 요일을 출력하는데 일월화수목금토 순으로 출력하시오.
select ename, to_char(hiredate,'day') from emp2 order by to_char(hiredate,'d') asc; |
# 문제 50. 이름, 입사일 요일을 출력하는데 월화수목금토일 순으로 출력하시오.
select ename, to_char(hiredate,'day') from emp order by replace(to_char(hireday 'd'),1,8) asc; |
# 문제 51. 598213432185162135 를 1000원 단위마다 ,를 찍고 맨 앞에 $ 표시가 되도록 출력하시오. (응용 가능성 높음)
select to_chart('598213432185162135','$999,999,999,999,999,999') from dual |
2. to_number
# 문제 52. '5322'를 숫자형으로 바꿔서 출력하시오.
select to_number('5322') from dual; |
3. to_date
# 문제 53. 81년 11월 17일에 입사한 사원의 이름과 입사일을 출력하시오.
select ename, hiredate from emp where to_char(hiredate,'RR/MM/DD') = '81/11/17'; |
# 문제 54. (튜닝) 위의 쿼리를 수정하시오.
select ename, hiredate from emp where hiredate = to_char('81/11/17','RR/MM/DD'); |
- where 절의 좌변을 함수로 가공하면 검색속도가 느려지니 가급적 우변을 가공하는 형태로 튜닝해야 한다. |
'Itwill 학습내용 정리 > 1. SQL' 카테고리의 다른 글
3. 그룹함수 (0) | 2019.04.18 |
---|---|
2.5 (단일행 함수) 일반 함수 & pivot 사용법 (0) | 2019.04.18 |
2.3 (단일행 함수) 날짜 함수 (0) | 2019.04.18 |
2.2 (단일행 함수) 숫자함수 (0) | 2019.04.18 |
2.1 (단일행 함수) 문자 함수 (0) | 2019.04.17 |