Search Results for 'REGEXP'

1 POSTS

  1. 2010|07 Oracle - 단일 행 (숫자, 날짜) 및 추가된 단일 행 함수

사용자 삽입 이미지

























# 숫자 함수
SQL> SELECT ABS(-15) FROM DUAL;

  ABS(-15)
----------
        15

SQL> SELECT CEIL(15.7) FROM DUAL;

CEIL(15.7)
----------
        16

SQL> SELECT FLOOR(15.7) FROM DUAL;

FLOOR(15.7)
-----------
         15

SQL> SELECT COS(180*3.14/180) FROM DUAL;

COS(180*3.14/180)
-----------------
       -.99999873

SQL> SELECT EXP(4) FROM DUAL;

    EXP(4)
----------
  54.59815

SQL> SELECT LOG(10, 100) FROM DUAL;

LOG(10,100)
-----------
          2

SQL> SELECT MOD(11, 4) FROM DUAL;

 MOD(11,4)
----------
         3

SQL> SELECT POWER(3, 2) FROM DUAL;

POWER(3,2)
----------
         9

SQL> SELECT ROUND(15.193, 1) FROM DUAL;

ROUND(15.193,1)
---------------
           15.2

SQL> SELECT ROUND(15.193, -1) FROM DUAL;

ROUND(15.193,-1)
----------------
              20

SQL> SELECT SIGN(-15) FROM DUAL;

 SIGN(-15)
----------
        -1

SQL> SELECT TRUNC(15.79, 1) FROM DUAL;

TRUNC(15.79,1)
--------------
          15.7

SQL> SELECT TRUNC(15.79, 2) FROM DUAL;

TRUNC(15.79,2)
--------------
         15.79
# 날짜 함수

SQL> SELECT SYSDATE FROM DUAL;

SYSDATE
------------
04-JUL-10

SQL> SELECT SYSTIMESTAMP FROM DUAL;

SYSTIMESTAMP
---------------------------------------------------------------------------
04-JUL-10 09.27.22.407650 AM +09:00

SQL> SELECT HIREDATE, ADD_MONTHS(HIREDATE, 1) FROM EMP WHERE EMPNO = 7782;

HIREDATE     ADD_MONTHS(H
------------ ------------
09-JUN-81    09-JUL-81

SQL> SELECT HIREDATE, LAST_DAY(HIREDATE) FROM EMP WHERE  EMPNO = 7782;

HIREDATE     LAST_DAY(HIR
------------ ------------
09-JUN-81    30-JUN-81

SQL> SELECT HIREDATE, NEXT_DAY(HIREDATE, 'THU') FROM EMP WHERE EMPNO = 7782;

HIREDATE     NEXT_DAY(HIR
------------ ------------
09-JUN-81    11-JUN-81

SQL> SELECT HIREDATE, NEW_TIME(HIREDATE, 'GMT', 'PDT') FROM EMP WHERE EMPNO = 7782;

HIREDATE     NEW_TIME(HIR
------------ ------------
09-JUN-81    08-JUN-81

SQL> SELECT HIREDATE, MONTHS_BETWEEN(SYSDATE, HIREDATE) FROM EMP WHERE EMPNO = 7782;

HIREDATE     MONTHS_BETWEEN(SYSDATE,HIREDATE)
------------ --------------------------------
09-JUN-81                          348.851627

SQL> SELECT ROUND(TO_DATE('27-OCT-98', 'DD-MON-YY'), 'YEAR') FROM DUAL;

ROUND(TO_DAT
------------
01-JAN-99

SQL> SELECT TRUNC(TO_DATE('27-OCT-98', 'DD-MON-YY'), 'YEAR') FROM DUAL;

TRUNC(TO_DAT
------------
01-JAN-98

# Oracle 9i 추가

- NVL2 (Column, Express1, Express2)
  • 해당 컬럼이 NULL이 아니면 express1의 값을, NULL이면 express2의 값을 리턴 해 줍니다.
SQL> SELECT empno, ename, comm, NVL2(comm, comm*1.1, 0) FROM EMP;

     EMPNO ENAME            COMM NVL2(COMM,COMM*1.1,0)
---------- ---------- ---------- ---------------------
      7368 SMITH                                     0
      7369 SMITH                                     0
      7499 ALLEN             300                   330
      7521 WARD              500                   550
      7566 JONES                                     0
      7654 MARTIN           1400                  1540
      7698 BLAKE                                     0
      7782 CLARK                                     0
      7788 SCOTT                                     0
      7839 KING                                      0
- NULLIF (Express1, Express2)
  • Express1과 Express2의 값을 비교하여 그 값이 같으면 NULL을 리턴하고 다르면 Expiress1의 값을 리턴해줍니다.
SQL> SELECT empno, ename, comm, NULLIF(comm, 0) FROM EMP;

     EMPNO ENAME            COMM NULLIF(COMM,0)
---------- ---------- ---------- --------------
      7368 SMITH
      7369 SMITH
      7499 ALLEN             300            300
      7521 WARD              500            500
      7566 JONES
      7654 MARTIN           1400           1400
      7698 BLAKE
      7782 CLARK
      7788 SCOTT
      7839 KING

- COALLESCE (Express1, , , , ExpressN)
  • Express1이 NULL이 아니면 Express1을 리턴하고, NULL이면 Express2를 Express1과 Express2 모두 NULL이면 ExpressN을 리턴해 줍니다.
SQL> SELECT EMPNO, COMM, SAL, COALESCE(COMM, SAL) FROM EMP;

     EMPNO       COMM        SAL COALESCE(COMM,SAL)
---------- ---------- ---------- ------------------
      7368                   800                800
      7369                   800                800
      7499        300       1600                300
      7521        500       1250                500
      7566                  2975               2975
      7654       1400       1250               1400
      7698                  2850               2850
      7782                  2450               2450
      7788                  3000               3000
      7839                  5000               5000

SQL> SELECT EMPNO, COMM, SAL, COALESCE(COMM, 100) FROM EMP;

     EMPNO       COMM        SAL COALESCE(COMM,100)
---------- ---------- ---------- ------------------
      7368                   800                100
      7369                   800                100
      7499        300       1600                300
      7521        500       1250                500
      7566                  2975                100
      7654       1400       1250               1400
      7698                  2850                100
      7782        
# Oracle 10g 추가
- REGEXP 함수의 MetaCharacters
사용자 삽입 이미지



- REGEXP_LIKE

- REGEXP_INSTR
- REGEXP_REPLACE
- REGEXP_SUBSTR
/*
 198로 시작되며 년도의 끝자리 수가 1~2를 만족하는 값을 검색합니다.
*/
SQL> SELECT EMPNO, ENAME, HIREDATE FROM EMP
  2  WHERE REGEXP_LIKE(TO_CHAR(HIREDATE, 'YYYY'), '^198[1-2]$');

     EMPNO ENAME      HIREDATE
---------- ---------- ------------
      7499 ALLEN      20-FEB-81
      7521 WARD       22-FEB-81
      7566 JONES      02-APR-81
      7654 MARTIN     28-SEP-81
      7698 BLAKE      01-MAY-81
      7782 CLARK      09-JUN-81
      7788 SCOTT      09-NOV-82
      7839 KING       17-NOV-81
      7900 JAMES      03-NOV-81
      7902 FORD       03-NOV-81
      7934 MILLER     23-JAN-82

/* 첫 문자가 A로 시작되는 값 */
SQL> SELECT EMPNO, ENAME FROM EMP
  2  WHERE REGEXP_LIKE(ename, '^A');

     EMPNO ENAME
---------- ----------
      7499 ALLEN
      7876 ADAMS

/*
 문자열에서 ㅣ로 시작되는 단어이며 그 나머지 문자열은 4자리로 구성된 단어의 position을 구하는 문장
*/
SQL> SELECT REGEXP_INSTR('But, soft! What light through yonder window breaks', 'l[[:alpha:]]{4}') as result FROM DUAL;

    RESULT
----------
        17

/*
 문자열에서 s로 시작되는 단어이며 그 나머지 문자열은 3자리로 구성된 단어를 검색합니다. 전체 문자열이 첫번째 position부터 검색하되 두번째 조건을 만족하는 단어의 position을 구하는 문장
*/
SQL> SELECT REGEXP_INSTR('But, soft! What light through yonder window softly greaks', 's[[:alpha:]]{3}', 1, 2) as result FROM DUAL;

    RESULT
----------
        45

/*
 문자열에서 10번째 position부터 o로 시작되는 문자열을 검색하되 두 번재로 조건을 만족하는 단어의 position을 구하는 문장
*/
SQL> SELECT REGEXP_INSTR('But, soft! What light through yonder window breaks?', 'o', 10, 2) as result FROM DUAL;

    RESULT
----------
        32

/*
 문자열에서 ㅣ로 시작되는 단어이며 나머지 문자열은 4자리로 구성된 단어를 sound라는 단어로 변경하는 문장.
*/
SQL> SELECT REGEXP_REPLACE('But, soft! What light through yonder window breaks?', 'l[[:alpha:]]{4}', 'sound') as result FROM DUAL;

RESULT
---------------------------------------------------
But, soft! What sound through yonder window breaks?

/*
 문자열에서 l로 시작되는 단어이며 그 나머지 문자열은 4자리 구성된 단어를 검색하는 문장
*/
SQL> SELECT REGEXP_SUBSTR('But, soft! What light through yonder window breaks?', 'l[[:alpha:]]{4}') as result FROM DUAL;

RESUL
-----
light






출처 : 오라클 ACE가 해설하는 NEW SQL & PL/SQL
07 3, 2010 23:51 07 3, 2010 23:51

Trackback URL : http://develop.sunshiny.co.kr/trackback/512

Leave a comment


Recent Posts

  1. Oracle - 바인드 변수에 대하여(테스트)
  2. Oracle - 디폴트 롤, DBA, CONNECT,...
  3. Oracle - 권한 및 롤 관리
  4. Oracle - SQL*PLUS의 SYSDBA 접근 제어
  5. Oracle - PFILE, SPFILE 에 관하여

Recent Comments

  1. 네 답글 고맙습니다. 좋은 한주 보... sunshiny 05 14,
  2. 좋은 정보 잘 살펴보고 갑니다. ememoho 05 12,
  3. 네. 고맙습니다^^ 행복한 한해 보... sunshiny 01 16,
  4. sunshiny님. 안녕하세요... 올려 주... yihans 01 16,
  5. 답글 주셔서 고맙습니다^^ 소스 복... sunshiny 01 11,

Recent Trackbacks

  1. 윈도우 cmd 명령어 팁 월풍도원(月風道院) - Delight on th... %M
  2. 파일 압축 Like RadioHead %M
  3. Mysql - mysql 설치후 Character set... 멀고 가까움이 다르기 때문 %M

Calendar

«   05 2012   »
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

Bookmarks

  1. 위키피디아
  2. MysqlKorea
  3. Oracle All Documentation
  4. 엑셈
  5. 오라클 클럽
  6. 네이버개발자센터
  7. API - Java
  8. API - Spring
  9. Java Community
  10. Reference - Spring
  11. 스프링사용자
  12. 자바소스
  13. 자바지기
  14. Ready System
  15. Solaris Freeware
  16. Linux-Site
  17. RedHat Korea
  18. 윈디하나의 솔라나라

Site Stats

TOTAL 245451 HIT
TODAY 157 HIT
YESTERDAY 139 HIT