고래씌

[Oracle] 2-4. DML(SELECT) - 함수_단일행 함수 ④ (형변환 함수) 본문

Database/Oracle

[Oracle] 2-4. DML(SELECT) - 함수_단일행 함수 ④ (형변환 함수)

고래씌 2023. 11. 24. 10:12

1. 형변환 함수

▶ NUMBER/DATE => CHARACTER

 

2. TO_CHAR(NUMBER/DATE, 포맷)

: 숫자형 또는 날짜형 데이터를 문자형 타입으로 변환(포맷에 맞춰서)

 

 

숫자를 문자열로

 

 

 

급여정보를 3자리마다  , 로 끊어서 확인

 

 

 

날짜를 문자열로

 

☞ 23/11/24  출력됨

 

 

 

시 분 초 : 오전(AM)/오후(PM)
오전 10:24:00

 

 

시 분 초 : 24시간 형식

 

▶ 11월 금, 2023

 

MON몇'월' 형식, DY요일 알려주되 몇일인지는 알려주지 않음.

 

 

▶ 년도로써 쓸 수 있는 포맷

 

YY와 RR의 차이점
- R : ROUND의 약자
- YY : 년도의 앞 두자리에 무조건 20이 붙음
- RR : 50년 기준으로 작으면 20, 크면 19 => 89년도면 1989

 

 

▶ 월로써 쓸 수 있는 포맷

 

 

▶ 일로써 쓸 수 있는 포맷

 

- D : 1주일 기준으로 일요일부터 오늘이 며칠째인지 알려주는 포맷
- DD : 1달 기준으로 1일부터 며칠째인지 알려주는 포맷

- DDD : 1년 기준으로 1월 1일부터 며칠째인지 알려주는 포맷

 

 

▶ 요일로써 쓸 수 있는 포맷

 

▶ 2023년 11월 24일 (금) 포맷으로 적용시키고 싶다

 

☞ "년"을 붙히려면 "년" 쌍따옴표로 추가해야한다.

 

 

 사원명, 입사일(위의 포맷을 적용)
2010년 이후에 입사한 사원들만 구하기

 

☞ 여러가지 방법이 있지만 2가지 방법을 사용하였다. 방법②는 자동형 변환이 일어난다.

 


3. TO_DATE(NUMBER/CHARACTER, 포맷)

▶ NUMBER/CHARCATER => DATE
- TO_DATE(NUMBER/CHARACTER, 포맷) : 숫자 혹은 문자형 데이터를 날짜형으로 변환
    (결과값은 DATE타입)

 

 

☞ 기본포맷 YY/MM/DD로 변환

☞ DATE 형으로 변환

 

 

20000101을 NUMBER값에서 DATE 자료형으로 변환하고 싶다

SELECT TO_DATE(000101)
FROM DUAL;

 

☞ 000101 => 101 : NUMBER 자료형에서 앞이 0으로 시작하면 전부 삭제된다

 

이경우, 0으로 시작하는 년도는 반드시 홀따옴표로 묶어서 문자열처럼 다뤄야함

 

 

 

☞ 이 문자열에 대한 정확한 포맷을 제시해줘야한다!

 

 

▶ 98/06/30  (1998년)

 

☞ 2098년도 이다!
☞ TO_DATE() 함수를 이용해서 DATE형식으로 변환시 두자리 년도에 대해 YY 포맷을 적용시켰을 경우 무조건 앞자리에 20년도가 추가된다.

 

 

1998년도
두자리 년도에 대해 RR포맷을 적용시켰을 경우 => 50 이상이면 이전(19), 50 미만이면 현재세기(20)를 추가

 


4. TO_NUMBER(CHARACTER, 포맷)

: 문자형 데이터를 숫자로 변환

CHARACTER => NUMBER

 

▶ 자동형변환 (문자열 → 숫자)

 

☞ 579 출력 

자동형 변환 이후 산술연산 수행
문자열의 연결을 하려면 CONCAT함수를 사용하거나 || 연결함수를 써야함

 

 

문자(,)가 포함되어있기 때문에 자동형변환이 안됨

 

 

10555000  출력
문자열이러한 포맷을 가진 데이터라고 알려줘야한다!