형식: 함수명 (칼럼이나 표현식 [, Arg1, Arg2, ... ]) |
---|
-- 오라클
SELECT LENGTH('SQL Expert')
FROM DUAL;
LENGTH('SQL Expert')
---------------------
10
-- SQL SERVER
SELECT LEN( 'SQL Expert')
FROM DUAL;
LENGTH('SQL Expert')
---------------------
10
SELECT SYSDATE FROM DUAL; => 12/07/18
SELECT GETDATE() AS CURRENTTIME; => 2012-07-18 13:10:02.047
-- 오라클 함수
SELECT EXTRACT(YEAR FROM HIREDATE) 입사년도
, EXTRACT(MONTH FROM HIREDATE) 입사월
, EXTRACT(DAY FROM HIREDATE) 입사일
FROM EMP;
-- SQL SERVER
SELECT DATEPART(YEAR, HIREDATE) 입사년도
, DATEPART(MONTH, HIREDATE) 입사월
, DATEPART(DAY, HIREDATE) 입사일
FROM EMP;
-- 결과
ENAME HIREDATE 입사년도 입사월 입사일
------ --------- ------ ---- -----
SMITH 1980-12-17 1980 12 17
ALLEN 1981-02-20 1981 2 20
WARD 1981-02-22 1981 2 22
-- ORACLE
SELECT TO_CHAR(SYSDATE, 'YYYY/MM/DD') 날짜
, TO_CHAR(SYSDATE, 'YYYY. MON, DAY') 문자형
FROM DUAL;
결과) 2012-07-19 2012. 7월 , 월요일
--SQL Server
SELECT CONVERT(VARCHAR(10),GETDATE(),111) AS CURRENTDATE
결과) 2012/07/19
-- 금액을 달러와 원화로 표시)
--Oracle
SELECT TO_CHAR(123456789/1200,'$999,999,999.99') 환율반영달러
, TO_CHAR(123456789,'L999,999,999') 원화 -- 칼럼의 L999에서 L은 로칼 화폐 단위를 의미한다.
FROM DUAL ;
결과) $102,880.66 , 123,456,789
-- 숫자형 변환 후 덧셈)
-- 팀(TEAM) 테이블의 ZIP 코드1과 ZIP 코드2를 숫자로 변환한 후 두 항목을 더한 숫자를 출력한다.
-- 데이터)
1. ZIP_CODE1 데이터: 700, 500, 800
2. ZIP_CODE2 데이터: 50, 92, 40
--Oracle
SELECT TEAM_ID
, TO_NUMBER(ZIP_CODE1,'999') + TO_NUMBER(ZIP_CODE2,'999') 우편번호합
FROM TEAM;
결과) 750, 592, 840
--SQL Server
SELECT TEAM_ID
, CAST(ZIP_CODE1 AS INT) + CAST(ZIP_CODE2 AS INT) 우편번호합
FROM TEAM;
결과) 750, 592, 840
SELECT LOC
, CASE LOC WHEN 'NEW YORK' THEN 'EAST'
WHEN 'BOSTON' THEN 'EAST'
WHEN 'CHICAGO' THEN 'CENTER'
WHEN 'DALLAS' THEN 'CENTER'
ELSE 'ETC'
END AS AREA
FROM DEPT;
SELECT ENAME
, CASE WHEN SAL >= 3000 THEN 'HIGH'
WHEN SAL >= 1000 THEN 'MID'
ELSE 'LOW'
END AS SALARY_GRADE
FROM EMP;
SELECT ENAME
, SAL
, CASE WHEN SAL >= 2000 THEN 1000
ELSE (CASE WHEN SAL >= 1000 THEN 500
ELSE 0
END)
END as BONUS
FROM EMP;
--ORACLE
SELECT PLAYER_NAME 선수명
, POSITION
, NVL(POSITION,'없음') 포지션
FROM PLAYER
WHERE TEAM_ID = 'K08'
--SQLSERVER
SELEC PLAYER_NAME 선수명
, POSITION
, *ISNULL*(POSITION,'없음') 포지션
FROM PLAYER
WHERE TEAM_ID = 'K08'
SELECT PLAYER_NAME 선수명
, POSITION
, CASE WHEN POSITION IS NULL THEN '없음'
ELSE POSITION
END AS 포지션
FROM PLAYER
WHERE TEAM_ID = 'K08'