오라클 데이터 베이스 5,6일차 (#3 변환 함수)
/*
변환 함수
TO_CHAR( 숫자 혹은 날짜, format)
숫자나 날짜를 문자로 변환
*/
SELECT TO_CHAR(123456789, '999,999,999') FROM DUAL;
SELECT TO_CHAR(SYSDATE, 'YYYY"년" MM"월" DD"일"') FROM DUAL;
/*
TO_NUMBER(char , [format])
숫자 포맷의 문자를 숫자로 변환
*/
SELECT
TO_NUMBER('123456'),
TO_NUMBER('123,456', '999,999')
FROM
DUAL;
/*
TO_DATE (CHAR, FORMAT)
문자를 날짜형으로 변환하는 함수
*/
-- 현재 날짜를 2012년 03월 01일이라고 가정하였을경우
-- 스케줄 레이블의 경기장아이디, 스케줄일자 , 스케줄날짜까지 남은일자를 출력
SELECT
STADIUM_ID AS "경기장아이디" ,
SCHE_DATE AS "경기일자",
TO_DATE(SCHE_DATE , 'YYYYMMDD') - TO_DATE('20120301' , 'YYYYMMDD') AS "남은일자"
FROM
SCHEDULE;
/*
TO_TIMESTAMP(char, format)
문자를 날짜형으로 변환하는 함수, 밀리초 단위까지 변환
*/
SELECT TO_TIMESTAMP ('2012/09/20 12:10:11 7826' , 'YYYY/MM/DD HH24:MI:SS FF4') FROM DUAL;
/*
NVL(expr1, expr2)
expr1의 값이 NULL 일 때 expr2를 반환
NULL이 아닐 경우 expr1을 반환
*/
SELECT
NVL('HELO', 'WORLD'),
NVL(NULL, 'WORLD')
FROM
DUAL;
-- 선수의 이름(PLAYER NAME) 과 등번호 (BACK_NO)를 출력
-- 등번호가 정해지지 않았을 경우 미정이라는 문구를 출력하도록 쿼리문을 작성 ( )
SELECT
PLAYER_NAME AS "선수이름",
NVL(TO_CHAR(BACK_NO), '미정') AS "등번호"
FROM
PLAYER;
/*
NVL2(expr1, expr2, expr3)
expr1의 값이 null일 경우 expr3를 반환
expr1의 값이 null이 아닌 경우 expr2를 반환
*/
SELECT
NVL2('HELO','A' , 'B'),
NVL2(NULL , 'A','B')
FROM
DUAL;
/*
COALESCE(expr1, expr2, ...)
매개변수로드래어오는 값 중 NULL 이 아닌 첫번째 값을 반환
*/
SELECT
COALESCE(NULL, 'A' , 'B' , 'C'),
COALESCE (NULL, NULL, 'B' , 'C'),
COALESCE(NULL,NULL,NULL, 'C'),
COALESCE (NULL,NULL,NULL,NULL)
FROM
DUAL;
/*
LNNVL(조건식)
매개변수로 들어오는 결과가 FALSE 혹은 UNKNOWN 이면 TRUE 를 반환
TRUE이면 FALSE 를 반환
*/
SELECT
'A'
FROM
DUAL WHERE LNNVL(1 > 2);
-- 홈팀ㅇ이 승리한 경기의 경기장 아이디와 경기일자, 홍팀점수, 원정팀점수를 출력
SELECT
STADIUM_ID AS "경기장아이디",
SCHE_DATE AS "경기일자",
HOME_SCORE AS "홈팀점수",
AWAY_SCORE AS "원정팀점수"
FROM
SCHEDULE
WHERE
(HOME_SCORE IS NOT NULL AND AWAY_SCORE IS NOT NULL) AND
LNNVL(HOME_SCORE <= AWAY_SCORE);
/*
NULLIF (expr1, expr2)
expr1과 expr2를 비교해 같으면 NULL
같지 않으면 EXPR1값을 반환
*/
SELECT
NULLIF('A' , 'A'),
NULLIF('A' , 'B')
FROM
DUAL;
/*
GREATEST(expr1, expr2, expr3 ...)
매개변수로 들어오는 표현식중 가장 큰값을 반환
문자도 비교 가능
*/
SELECT
GREATEST(1,2,3,2),
GREATEST('이순신' , '강강찬' , '세종대왕')
FROM DUAL;
/*
DECODE(expr , search1 , result1 , search2 , result2 , ... , default)
expr과 search1을 비교하여 두 값이 같으면 result1을 반환
같지 않으면 search2의 비교하여 같으면 result2를 반환하는 방식으로
비교한뒤 최종적으로 같은 값이 없으면 default 값을 반환
*/
SELECT
DECODE('First' , 'First' , 'A' , 'Second' , 'B' , 'C'),
DECODE('Sirst' , 'First' , 'A' , 'Second' , 'B' , 'C'),
DECODE('Helo' , 'First' , 'A' , 'Second' , 'B' , 'C')
FROM DUAL;