SQL
ORACLE 함수정의
우혁이 아빠
2009. 12. 21. 14:48
## 문자함수
1. 숫자를 문자로 변환
select chr(75) from dual;
ex) 문자를 숫자로
select TO_NUMBER(75) from dual;
2. 문자값 결합
select CONCAT(CONCAT(ename, 'is a '),job)
from emp;
3. 첫번째 문자 대문자로
select INITCAP('the soap') from dual;
4. 모두 소문자로
select LOWER('WEBPD4U') from dual;
5. 왼쪽 나머지 공간을 지정한 문자로 채우기 LPAD
select LPAD('Page 1',15,'*') from dual;
6. 왼쪽 부터 지정된 단어가 발견되면 제거
select LTRIM('xyxXxyLAST WORD','xy') from dual;
7. REPLACe
select REPLACE('JACK and JUE', 'J','BL') from dual;
8. RPAD
select RPAD(ename, 11, '@') from emp where ename='TURNER'
9. RTRIM
select RTRIM('TURNERyxXxy','xy') from dual;
10. 문자 추출하기
select SUBSTR('ABCDEFG',3,2) from dual;
11. 문자 추출하기(뒤에서 부터)
select SUBSTR('ABCDEFG',-3,2) from dual;
12. 문자를 아스키로 변환
select ASCII('Q') from dual;
13. 문자의 위치값 반환?
select INSTR('CORPORATE FLOOR','OR',3,2) from dual;
select INSTR('CORPORATE FLOOR','OR',-3,2) from dual;
14. 문자열 길이 반환
select LENGTH('CAN') from dual; --3
select LENGTHB('가나다라마바사') from dual;--14
15. 단어중에서 가장 높은값(내림차순) 가장 낮은값(오름차순)
select GREATEST('HARRY','HARIOT','HALORD') from dual;
select LEAST('HARRY','HARIOT','HALORD') from dual;
16. 컬럼이 NULL이면 지정한 값으로 대체
insert into emp(empno,sal)
values(9998,7777);
commit;
select CONCAT(CONCAT(ename, 'is a '),job)
from emp;
3. 첫번째 문자 대문자로
select INITCAP('the soap') from dual;
4. 모두 소문자로
select LOWER('WEBPD4U') from dual;
5. 왼쪽 나머지 공간을 지정한 문자로 채우기 LPAD
select LPAD('Page 1',15,'*') from dual;
6. 왼쪽 부터 지정된 단어가 발견되면 제거
select LTRIM('xyxXxyLAST WORD','xy') from dual;
7. REPLACe
select REPLACE('JACK and JUE', 'J','BL') from dual;
8. RPAD
select RPAD(ename, 11, '@') from emp where ename='TURNER'
9. RTRIM
select RTRIM('TURNERyxXxy','xy') from dual;
10. 문자 추출하기
select SUBSTR('ABCDEFG',3,2) from dual;
11. 문자 추출하기(뒤에서 부터)
select SUBSTR('ABCDEFG',-3,2) from dual;
12. 문자를 아스키로 변환
select ASCII('Q') from dual;
13. 문자의 위치값 반환?
select INSTR('CORPORATE FLOOR','OR',3,2) from dual;
select INSTR('CORPORATE FLOOR','OR',-3,2) from dual;
14. 문자열 길이 반환
select LENGTH('CAN') from dual; --3
select LENGTHB('가나다라마바사') from dual;--14
15. 단어중에서 가장 높은값(내림차순) 가장 낮은값(오름차순)
select GREATEST('HARRY','HARIOT','HALORD') from dual;
select LEAST('HARRY','HARIOT','HALORD') from dual;
16. 컬럼이 NULL이면 지정한 값으로 대체
insert into emp(empno,sal)
values(9998,7777);
commit;
select sal,ename,hiredate from emp;
select NVL(sal, 0) , NVL(ename,'*'), NVL(hiredate,'01-JAN-02') from emp;
17. 접속한 사용자 알아내기
select USER from dual;
select NVL(sal, 0) , NVL(ename,'*'), NVL(hiredate,'01-JAN-02') from emp;
17. 접속한 사용자 알아내기
select USER from dual;
##숫자 함수
1.절대값
select ABS(-15) from dual;
2. 올림
select CEIL(15.7) from dual;
3. 내림
select FLOOR(15.7) from dual;
4.나머지값
select MOD(11,4) from dual;
5.지정한 자리수에서 반올림
select ROUND(15.193,1) from dual;
select ROUND(115.193,-2) from dual;--정수자리수에서 반올림
6. 음수이면 -1, 양수이면 1, 0이면 0
select SIGN(-15) from dual;
select SIGN(0) from dual;
select SIGN(15) from dual;
7. 절삭
select TRUNC(15.79,1) from dual;
select ABS(-15) from dual;
2. 올림
select CEIL(15.7) from dual;
3. 내림
select FLOOR(15.7) from dual;
4.나머지값
select MOD(11,4) from dual;
5.지정한 자리수에서 반올림
select ROUND(15.193,1) from dual;
select ROUND(115.193,-2) from dual;--정수자리수에서 반올림
6. 음수이면 -1, 양수이면 1, 0이면 0
select SIGN(-15) from dual;
select SIGN(0) from dual;
select SIGN(15) from dual;
7. 절삭
select TRUNC(15.79,1) from dual;
##날짜함수
1. 시스템 날짜
select sysdate from daul;
2. 해당 날짜 + 지정한 달수
select hiredate, ADD_MONTHS(hiredate,1) from emp where empno=7782;
3. 마지막 일
select hiredate, LAST_DAY(hiredate) from emp where empno=7782;
4. 두날짜 간의 차이값
select hiredate, MONTHS_BETWEEN(SYSDATE,HIREDATE) from emp;
##변환함수
날짜 출력 변환
select ename,TO_CHAR(hiredate,'DD-MM-YY') HIREDATE from emp;
일자출력시 0값 제거
select ename,TO_CHAR(hiredate,'fmDD-MM-YY') HIREDATE from emp;
24시간 표현식으로 출력
select TO_CHAR(sysdate,'HH24:MI:SS') from dual;
오전,오후 표기
select TO_CHAR(sysdate,'AM HH:MI') from dual;
숫자값 출력시 금액 표시
select TO_CHAR(12345,'$9099,999') from dual;
TO_NUMBER
select TO_NUMBER('100') from dual;
select TO_NUMBER('100') from dual;
날짜변환
select TO_DATE('01-JUL-99','DD-MM-YY') from dual;
select TO_DATE('01:30','HH24:MI') from dual;
select TO_DATE('01-JUL-99','DD-MM-YY') from dual;
select TO_DATE('01:30','HH24:MI') from dual;
select TO_DATE('31-12-07 23:30','DD-MM-YY HH24:MI') from dual
강신윤의 홈피에서 퍼왔어요.