[Oracle]単一関数-変換関数


TO NUMBER(文字値)


文字値を数値に変換して返される関数.
文字値が数値形式の文字でない場合、エラーが発生します.
--TO_NUMBER(문자값): 강제 형변환이 일어난다.
--비교 컬럼의 자료형이 숫자형인 경우 비교값이 문자값이면 숫자값으로 변환하여 비교 
SELECT EMPNO,ENAME,SAL FROM EMP WHERE EMPNO=TO_NUMBER('7839');

TO NUMBERの無効化


自動変換が発生します.
比較欄の資料型が数値型、比較値が文字値の場合、自動的に数値値に変換して比較します.
--자동으로 형변환
SELECT EMPNO,ENAME,SAL FROM EMP WHERE EMPNO='7839';
文字値を計算すると、自動的に数値値に変換されて演算処理されます.
SELECT 100+200 FROM DUAL;
SELECT '100'+'200' FROM DUAL;--위와 결과 같음

TO DATE(文字値)


文字値を日付値に変換して返される関数.
文字値がパターンに適した日付フォーマットでない場合、エラーが発生します.
デフォルトの日付モード:RR/MM/DD
--TO_DATE(문자값) : 강제 형변환이 일어난다.
--비교 컬럼의 자료형이 날짜형인 경우 비교값이 문자값이면 날짜값으로 변환하여 비교
SELECT EMPNO,ENAME,HIREDATE FROM EMP WHERE HIREDATE=TO_DATE('82/01/23');

TO DATEを無効にする


自動変換が発生します.
比較欄の資料型が日付型の場合、比較値が文字値の場合、自動的に日付値に変換して比較します.
--날짜값은 [YYYY-MM-DD] 패턴으로도 표현 가능하다.
SELECT EMPNO,ENAME,HIREDATE FROM EMP WHERE HIREDATE='1982-01-23';

TO DATE(文字値、モード文字)


TO DATE関数のモード文字を使用すると、文字値を必要なモードフォーマットに変換できます.
SELECT EMPNO,ENAME,HIREDATE FROM EMP
WHERE HIREDATE=TO_DATE('01-23-1982','MM-DD-YYYY');

文字値を日付値に変換して演算

SELECT EMPNO,ENAME,HIREDATE,TO_DATE('2000-01-01')-HIREDATE 
FROM EMP WHERE EMPNO=7844;

TO CHAR({数値値|日付値},パターン文字)


数値または日付値を必要なパターンの文字値に変換することによって返される関数.

日付パターン文字


YYYY(年)、RR(年)、MM(月)、DD(日)、HH 24(時間)、HH 12(時間)、AM(午前)、PM(午後)、MI(分)、SS(秒)
SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD HH24:MI:SS') FROM DUAL;

日付値を必要なパターンの文字値に変換して比較できます

SELECT EMPNO,ENAME,HIREDATE FROM EMP 
WHERE TO_CHAR(HIREDATE,'YYYY')='1981';

ディジタルモード文字


9(数値またはスペース)、0(数値)、L(通貨記号)、$(ドル)
SELECT 1000000000,TO_CHAR(1000000000,'9,999,999,990') FROM DUAL;

パターン文字が欠けている場合は、#で表します.
SELECT 10000000000,TO_CHAR(10000000000,'9,999,999,990') FROM DUAL;