Drop Database

오라클 함수 정리...아..지겨워..맨날 정리..정리..

한알두알 2007. 10. 17. 15:55

 단일행 함수


 - 문자형 함수
 UPPER : 모든 문자를 대문자로 전환
 LOWER : 모든 문자를 소문자로 전환
 INITCAP : 문자를 단어별로 앞머리는 대문자 나머지는 소문자로 전환
 CONCAT : 두 문자열을 합성. ||연산자와 같은 용도로 사용
 SUBSTR : 특정문자열의 부분을 선택
 LENGTH : 문자열의 길이를 구함
 LPAD : 왼쪽 문자 자리를 채움
 RPAD : 오른쪽 문자 자리를 채움
 LTRIM : 왼쪽 문자를 지움
 RTRIM : 오른쪽 문자를 지움
 TRANSLATE : 특정 문자열을 대체
 REPLACE : 특정 문자열을 대신

 UPPER(문자값) : UPPER('Oracle Server')
 → ORACLE SERVER
 LOWER(문자값) :  LOWER('Oracle Server')
 → oracle server
 INITCAP(문자값) :  INITCAP('Oracle Server')
 → Oracle Server
 CONCAT(문자값1,  문자값2) :  CONCAT('Oracle', ' Server')
 → Oracle Server
 SUBSTR(문자값,  a,  b)
 a 선택할 문자열의 시작위치.
 음수면 끝에서부터 시작
 b 선택할 문자열의 개수.
 이 인자는 생략할 수 있으며, 
 생략할 경우 문자열의 끝까지 선택
 :  SUBSTR('강남구 역삼동‘,5,2)
 → 역삼
 LENGTH(문자값1, a, 문자값2) : LENGTH(‘홍길동’)
 → 3
 LPAD(문자값1, a, 문자값2)
 RPAD(문자값1, a, 문자값2)
 a : 전체 채울 자리수
 문자값2 : 채울 문자
 생략할 수 있으며, 생략되면
 공백값임
 : LPAD(‘홍길동’,10 ‘*’)
 → ****홍길동
 LTRIM(문자값1, 문자값2)
 RTRIM(문자값1, 문자값2)
 문자값1에서 왼쪽(오른쪽)에서부터
 더이상 문자값2를 만나지 않을 때까지 지움
 : LTRIM('XXAXBA','X')
 → AXBA
 TRANSLATE(문자값, a, b)
 a 대체하고 싶은 문자(from)
 b 대체할 결과의 문자(to)
 : TRANSLATE('AABBA','B','C')
 → AACCA
 REPLACE (문자값, a, b)
 a 바꾸고 싶은 문자(from)
 b 바꿀 결과의 문자(to)
 : REPLACE ('JACK and JUE','J','BL')
 → BLACK and BLUE

 - 숫자형 함수
 ROUND : 숫자를 반올림
 TRUNC : 숫자를 절사
 MOD : 나누기 연산에서 나머지 구함
 POWER : 거듭제곱
 SQRT : 제곱근
 SIGN : 양수인지 음수인지 0인지를 구벌함
 CHR : ASCII 값에 해당하는 문자를 구함

 ROUND(숫자값, a), TRUNC(숫자값, a)
 a 숫자값을 반올림(버림)하여 a자리까지
 돌려줌.a가 양수이면 소수이하자리를,
 음수이면 정수 부분 자리임
 생략할 수 있으며, 생략하면 0
 : ROUND(35.735,2)→35.74
 MOD(숫자값, a )
 a 숫자값을 나누기 할 수 있음
 : MOD(7,2)→1
 POWER(숫자값1, 숫자값2) : POWER(3,2)→9
 SQRT (숫자값) : SQRT(25)→5
 SIGN(숫자값) : SIGN(-15)→-1
 CHR(숫자값) : CHR(65)→A

 - 날짜형 함수
 SYSDATE : 현재 시스템의 날짜 및 시간을 구함
 LAST_DAY : 지정한 날짜의 해당 월의 마지막 날짜를 구함
 MONTHS_BETWEEN : 두 날짜 사이의 개월 수를 구함
 ADD_MONTHS : 지정한 날짜로부터 몇 개월 후의 날짜를 구함
 ROUND : 날짜에 대한 반올림
 TRUNC : 날짜에 대한 버림

 SYSDATE : SYSDATE → 10-MAY-99
 LAST_DAY(날짜값) : LAST_DAY('17-FEB-98') → 28-FEB-98
 MONTHS_BETWEEN(날짜값1, 날짜값2) : MONTHS_BETWEEN('26-APR-97','22-JUL-95') → 21.1290323
 ADD_MONTHS(날짜값, 숫자값) : ADD_MONTHS('22-JUL-95',21) → 22-APR-97
 ROUND(날짜값, 자리수) : 현재 날짜가 1999년 5월 10일이라고 가정하자.
 ROUND(SYSDATE,'MONTH') → 01-MAY-99
 TRUNC(날짜값, 자리수) : 현재 날짜가 1999년 5월 10일이라고 가정하자.
 TRUNC(SYSDATE,'YEAR') → 01-JAN-99

 - 날짜에 대한 산술연산
 날짜 + 숫자 : 날짜 특정한 날로부터 몇일 후의 날짜 계산
 날짜 - 숫자 : 날짜 특정한 날로부터 몇일 전의 날짜 계산
 날짜 - 날짜 : 숫자 두 날짜 사이의 차이를 숫자로 계산

 - 변환형 함수
 TO_CHAR : 숫자나 날짜를 문자열로 변환
 TO_NUMBER : 문자를 숫자로 변환
 TO_DATE : 문자를 날짜로 변환

 - TO_CHAR에서 숫자를 문자로 변환시에 형식에 사용되는 요소
 9 : 일반적인 숫자를 나타냄
 0 : 앞의 빈자리를 0으로 채움
 $ : dollar를 표시함
 L : 지역 통화 단위(ex )
 . : 소숫점을 표시함
 , : 천단위를 표시함
 - TO_CHAR에서 날짜를 문자로 변환시에 형식에 사용되는 요소
 SCC : 세기를 표시 S는 기원전(BC)
 YEAR : 연도를 알파벳으로 spelling
 YYYY : 4자리 연도로 표시
 YY : 끝의 2자리 연도로 표시
 MONTH : 월을 알파벳으로 spelling
 MON : 월의 알파벳 약어
 MM : 월을 2자리 숫자로 표시
 DAY : 일에 해당하는 요일
 DY : 일에 해당하는 요일의 약어
 DDD,DD,D : 연도,월,일 중의 날짜를 숫자로 표시
 HH , HH24 : (1-12) , (0-23)중의 시간을 표시
 MI : 분을 표시
 SS : 초를 표시
 AM(A.M.),PM(P.M.) : 오전인지 오후인지를 표시

 TO_CHAR(문자값,‘형식’)
 숫자를 문자로 변환 : TO_CHAR(350000,'$999, 999')→ $350,000
 숫자를 날짜로 변환 : TO_CHAR(SYSDATE,'YY/MM/DD')→ 95/05/25
 TO_DATE(문자값, ‘형식’) : TO_DATE('10 SEPTEMBER 1992','DD MONTH YYYY')→10-SEP-92
 TO_NUMBER(문자값) : TO_NUMBER('1234')→ 1234

 - DECODE 함수
 DECODE 함수는 값을 비교하여 해당하는 값을 돌려주는 함수
 > DECODE (형식,비교값1,결과치1,비교값2,결과치2,...기본치 )
 형식 : 컬럼이나 값
 비교값1 : 형식이 비교값1에 맞는지를 비교
 결과값1 : 형식이 비교값1에 맞을 때 갖는 값
 기본치 : 형식이 비교값1,2,...에 맞지 않을 때 가지는 값
 생략될 수 있으며, 생략되면 NULL이다.

 SQL> SELECT name,title,DECODE(SUBSTR(title,-2,2),
 2 '부장',salary*1.1,
 3 '과장',salary*1.07,
 4 '사원',salary*1.05,
 5 salary) 이번달급여
 6 FROM s_emp
 7 ORDER BY 3 DESC ;


* 다중행 함수


 - 그룹함수
 COUNT( a ) : a의 행의 개수를 구함
 AVG( a ) : a의 평균을 구함
 SUM( a ) : a의 합계를 구함
 MIN( a ) : a의 최소값을 구함
 MAX( a ) : a의 최대값을 구함
 STDDEV( a ) : a의 표준 편차를 구함
 VARIANCE( a ) : a의 분산을 구함

 COUNT(*)를 제외한 모든 그룹함수는 NULL값을 고려하지 않습니다.
 중복값을 제거하고 싶은 경우는 a의 앞에 DISTINCT를 기술합니다.
 MAX , MIN , COUNT를 제외한 그룹함수는 숫자타입의 데이터에만 가능합니다

'Drop Database' 카테고리의 다른 글

Sequence 이용  (0) 2007.10.18
LOB DATA TYPE의 이해  (0) 2007.10.17
Oracle Clob 처리  (0) 2007.10.17
오라클 날짜 다루기  (0) 2007.10.10
케릭터셋 인코딩  (0) 2007.10.05