database/Oracle
[Oracle] Singlerow_conversion
솧이
2022. 8. 31. 22:15
oracle data type
묵시적(자동) 변환
javascript
console.log(1 + '1'); //문자열 11
숫자로 된 문자는 산술 연산지 자동적으로 숫자로 변환해준다
SELECT 1 + '1' FROM dual; -- 숫자!
실제로는 아래처럼 형변환 함수가 호출되는 것이다
SELECT 1 + to_number('1') FROM dual;
문자 A를 숫자로 변환시키려고 했기에 에러가 뜬다
SELECT 1 + 'A' FROM dual;
형변환 함수 : TO_CHAR, TO_NUMVER, TO_DATE
* 묵시적 형변환은 편한 것 같지만 튜닝에서 뜻하지 않은 성능 저하를 가져올 수 있다
* 고로 명시적 형변환을 하는 게 좋다
TO_CHAR 함수 (날짜 -> 문자)
문법 : TO_CHAR(날짜, 원하는 모양);
SELECT
TO_CHAR(SYSDATE, 'YYYY') 연도4자리,
TO_CHAR(SYSDATE, 'YY') 연도2자리,
TO_CHAR(SYSDATE, 'YEAR') 연도영문
FROM dual;
SELECT
TO_CHAR(SYSDATE, 'MM') 월2자리,
TO_CHAR(SYSDATE, 'MON') 월3자리,
TO_CHAR(SYSDATE, 'MONTH') 월전체,
TO_CHAR(SYSDATE, 'MON', 'NLS_DATE_LANGUAGE=ENGLISH') 월영문3자리,
TO_CHAR(SYSDATE, 'MONTH', 'NLS_DATE_LANGUAGE=ENGLISH') "월영문전체(대)",
TO_CHAR(SYSDATE, 'month', 'NLS_DATE_LANGUAGE=ENGLISH') "월영문전체(소)",
TO_CHAR(SYSDATE, 'Month', 'NLS_DATE_LANGUAGE=ENGLISH') "월영문전체(첫글자대)"
FROM dual;
SELECT
TO_CHAR(SYSDATE, 'DD') 일숫자2자리,
TO_CHAR(SYSDATE, 'DDTH') 몇번째날,
TO_CHAR(SYSDATE, 'DAY') 요일,
TO_CHAR(SYSDATE, 'Dy') 요일앞자리
FROM dual;
SELECT
TO_CHAR(SYSDATE, 'HH24') 시24hr,
TO_CHAR(SYSDATE, 'HH') 시12hr,
TO_CHAR(SYSDATE, 'MI') 분,
TO_CHAR(SYSDATE, 'SS') 초
FROM dual;
TO_CHAR 함수 (숫자 -> 문자)
SELECT 1234,
TO_CHAR(1234),
TO_CHAR(1234, '99999') "9하나당 1자리", -- 5자리에 맞혀서 나왔다
TO_CHAR(1234, '099999') "빈자리 0으로", -- 빈자리는 0으로 나온다
TO_CHAR(1234, '$9999') "빈자리 $으로", -- 빈자리는 0으로 나온다
TO_CHAR(1234.1278, '9999.99') "소수점이하 두자리", -- 반올림되어 나온다
TO_char(1234, '99,999') "천단위 구분기호" -- 반올림되어 나온다
FROM dual;
to_number() 함수 : 문자 -> 숫자로 변환
SELECT '123.44', to_number('123.44') FROM dual
to_date() 함수 : 문자 -> 날짜로 변환
SELECT
TO_DATE('2022-08-31', 'YYYY-MM-DD') "to-date"
FROM dual;