문자 함수
select ENAME, upper(ENAME), lower(ENAME), initcap(ENAME)
from EMP;
select *
from EMP
where upper(ENAME) like upper('%smith%');
select ENAME, length(ENAME)
from EMP;
select JOB, substr(JOB, 1, 2), substr(JOB, 3, 2), substr(JOB, 5)
from EMP;
select JOB,
substr(JOB, -lengthb(JOB)),
substr(JOB, -lengthb(JOB), 2),
substr(JOB, -3)
from EMP;
select instr('HELLO, ORACLE!', 'L') as INSTR_1,
instr('HELLO, ORACLE!', 'L', 5) as INSTR_2,
instr('HELLO, ORACLE!', 'L', 2, 2) as INSTR_3
from DUAL;
select '010-1234-5678' as REPLACE_BEFORE,
replace('010-1234-5678', '-', ' ') as REPLACE_1,
replace('010-1234-5678', '-') as REPLACE_2
from DUAL;
select 'Oracle',
lpad('Oracle', 10, '#') as LPAD_1,
rpad('Oracle', 10, '*') as RPAC_1,
lpad('Oracle', 10) as LPAD_2,
rpad('Oracle', 10) as RPAD_2
from DUAL;
select rpad('970307-', 14, '*') as RPAD_JMNO,
rpad('010-1234-', 13, '*') as RPAD_PHONE
from DUAL;
select concat(EMPNO, ENAME),
concat(EMPNO, concat(' : ', ENAME))
from EMP
where ENAME = 'SMITH';
select EMPNO || ENAME,
EMPNO || ' : ' || ENAME
from EMP
where ENAME = 'SMITH';
select '[' || trim(' _ _Oracle_ _ ') || ']' as TRIM,
'[' || trim(leading from ' _ _Oracle_ _ ') || ']' as TRIM_LEADING,
'[' || trim(trailing from ' _ _Oracle_ _ ') || ']' as TRIM_TRAILING,
'[' || trim(both from ' _ _Oracle_ _ ') || ']' as TRIM_BOTH
from DUAL;
select '[' || trim('_' from '_ _Oracle_ _') || ']' as TRIM,
'[' || trim(leading '_' from '_ _Oracle_ _') || ']' as TRIM_LEADING,
'[' || trim(trailing '_' from '_ _Oracle_ _') || ']' as TRIM_TRAILING,
'[' || trim(both '_' from '_ _Oracle_ _') || ']' as TRIM_BOTH
from DUAL;
select '[' || trim(' _Oracle_ ') || ']' as TRIMG,
'[' || ltrim(' _Oracle_ ') || ']' as LTRIM,
'[' || ltrim('<_Oracle_>', '_<') || ']' as LTRIM_2
from DUAL;
숫자 함수
select round(1234.5678) as ROUND,
round(1234.5678, 2) as ROUNG_2,
round(1234.5678, -2) as ROUND_3
from DUAL;
select trunc(1234.5678) as TRUNC,
trunc(1234.5678, 2) as TRUNC_2,
trunc(1234.5678, -2) as TRUNC_3
from DUAL;
select ceil(3.14),
floor(3.14)
from DUAL;
select mod(15, 6)
from DUAL;
날짜 함수
select sysdate as NOW,
sysdate-1 as YESTERDAY,
sysdate+1 as Tomorrow
from DUAL;
select sysdate,
add_months(sysdate, 3)
from dual;
select EMPNO,
ENAME,
HIREDATE,
add_months(HIREDATE, 120) as WORK10YEAR
from EMP;
select EMPNO, ENAME, HIREDATE, sysdate,
months_between(HIREDATE, sysdate) as MONTHS1,
months_between(sysdate, HIREDATE) as MONTHS2,
trunc(months_between(sysdate, HIREDATE)) as MONTHS3
from EMP;
select sysdate,
next_day(sysdate, '월요일'),
last_day(sysdate)
from DUAL;
select sysdate,
round(sysdate, 'CC') as FORMAT_CC,
round(sysdate, 'YYYY') as FORMAT_YYYY,
round(sysdate, 'Q') as FORMAT_Q,
round(sysdate, 'DDD') as FORMAT_DDD,
round(sysdate, 'HH') as FORMAT_HH
from DUAL;
형 변환 함수
select to_char(sysdate, 'YYYY/MM/DD HH24:MI:SS') as 현재날짜시간
from DUAL;
select sysdate,
to_char(sysdate, 'MM') as MM,
to_char(sysdate, 'MON') as MON,
to_char(sysdate, 'MONTH') as MONTH,
to_char(sysdate, 'DD') as DD,
to_char(sysdate, 'DY') as DY,
to_char(sysdate, 'DAY') as DAY
from DUAL;
select sysdate,
to_char(sysdate, 'MM') as MM,
to_char(sysdate, 'MON', 'NLS_DATE_LANGUAGE = KOREAN') as MON_KOR,
to_char(sysdate, 'MON', 'NLS_DATE_LANGUAGE = JAPANESE') as MON_JAN,
to_char(sysdate, 'MON', 'NLS_DATE_LANGUAGE = ENGLISH') as MON_ENG
from DUAL;
select sysdate,
to_char(sysdate, 'HH24:MI:SS') as HH24MISS,
to_char(sysdate, 'HH12:MI:SS AM') as HHMISS_AM,
to_char(sysdate, 'HH:MI:SS P.M.') as HHMISS_PM
from DUAL;
select SAL,
to_char(SAL, '$999,999') as SAL_$,
to_char(SAL, 'L999,999') as SAL_L
from EMP;
select to_number('1,300', '999,999') - to_number('1,500', '999,999')
from DUAL;
select to_date('2024-01-04', 'YYYY-MM-DD') as TODATE1,
to_date('20240104', 'YYYY-MM-DD') as TODATE2
from DUAL;
NULL 처리 함수
select EMPNO,
ENAME,
SAL,
COMM,
SAL + COMM,
nvl(COMM, 0),
SAL + nvl(COMM, 0)
from emp;
select EMPNO,
ENAME,
COMM,
nvl2(COMM, '0', 'X'),
nvl2(COMM, SAL * 12 + COMM, SAL * 12) as ANNSAL
from EMP;
DECODE 함수와 CASE문
select EMPNO,
ENAME,
JOB,
SAL,
decode(JOB,
'MANAGER', SAL * 1.1,
'SALESMAN', SAL * 1.05,
'ANALYST', SAL,
SAL * 1.03) as UPSAL
from EMP;
select EMPNO,
ENAME,
JOB,
SAL,
case JOB
when 'MANAGER' then SAL * 1.1
when 'SALESMAN' then SAL * 1.05
when 'ANALYST' then SAL
else SAL * 1.03
end as UPSAL
from EMP;