페이지

2012년 3월 28일 수요일

Single functions

문자 함수

LOWER: 전부 소문자로
UPPPER: 전부 대문자로
INITCAP: 맨 앞만 대문자로

CONCAT('Hello', 'World')=> HelloWorld
SUBSTR('HelloWorld',1,5)=> Hello
LENGTH('HelloWorld')=> 10 INSTR('HelloWorld', 'W')=> 6
LPAD(salary,10,'*')=> *****24000 =LPAD(' ',10,'*') 식으로도 가능 RPAD(salary, 10, '*')=> 24000*****
REPLACE('JACK and JUE','J','BL')=> BLACK and BLUE
TRIM('H' FROM 'HelloWorld')=> elloWorld =첫글자나 맨 뒤글자만 됨

숫자 함수
ROUND
TRUNC
MOD: 나머지값

날짜 함수
SYSDATE

※date+number = number를 일수로 계산함, 결과는 date
   date-number = 위와 마찬가지, 결과는 date
   date-date = 둘의 차이를 일수로 계산하여 보여줌, 결과는 일수
   date+number/24 = 일수/24이므로 시간임. 시간을 + 계산하여 결과로 date를 보여줌

MONTHS_BETWEEN('date1', 'date2'): 두 날짜사이의 달수를 계산함
ADD_MONTHS('date1', number): date1에서 number만큼의 달수를 더함
NEXT_DAY('date', 'monday'):date의 다음 월요일을 나타냄
LAST_DAY('date'):해당 달의 마지막날을 나타냄
ROUND(SYSDATE,'MONTH'):16일 이후는 반올림하여 다음달로 표시함.
ROUND(SYSDATE,'YEAR'):7월 1일 이후는 반올림하여 다음 해로 표시함.
TRUNC(SYSDATE,'MONTH'):그 달의 1일로 표시함.
TRUNC(SYSDATE,'YEAR'):해당 년도의 1월 1일로 표시함.

변환 함수
TO_CHAR(date,'[fm]format_model')
TO_CHAR(number, 'format_model')
TO_NUMBER(char[, 'format_model'])
TO_DATE(char[, '[fx]format_model'])

NULL 함수
NVL(expr1, expr2): expr1에 있는 NULL 값을 전부 expr2를 리턴, date, number, char, varchar2 다 가능, 주의! expr1과 expr2는 데이터타입이 같아야함. 틀리면 to_char, to_num으로 바꿔서 해야댐.
NVL2(expr1, expr2, expr3): expr1에 있는 값이 널이 아니면 expr2를, 널이면 expr3를 리턴
NULLIF(expr1, expr2): expr1과 expr2가 같으면 null을 리턴하고, 같지 않으면 expr1을 리턴
COALESCE(expr1, expr2, ...exprn): expr1이 null이 아니면 expr1을 리턴, null이면 expr2를 리턴,  expr1과 expr2가 null이면 expr3을 리턴)

IF-THEN-ELSE 식 함수
CASE expr WHEN comparison_expr1 THEN return1
                  [WHEN comparison_expr2 THEN return_expr2
                   WHEN comparison_exprn THEN return_exprn
                   ELSE else_expr]
END

예시)
SELECT last_name, job_id, salary,
  CASE job_id WHEN 'IT_PROG' THEN 1.10*salary
  WHEN 'ST_CLERK' THEN 1.15*salary
  WHEN 'SA_REP' THEN 1.20*salary
  ELSE salary END AS "REVISED_SALARY"
FROM employees;

DECODE(col|expression, search1, result1
                 [, search2, result2,...,]
                 [, default])

예시)
SELECT last_name, job_id, salary,
  DECODE(job_id, 'IT_PROG', 1.10*salary,
  'ST_CLERK', 1.15*salary,
  'SA_REP', 1.20*salary,
  salary)
  AS REVISED_SALARY
FROM employees;

댓글 없음:

댓글 쓰기