메뉴 건너뛰기

조회 수 23247 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부

오라클(Oracle)에서는 ISNUMERIC(숫자확인함수가 없다직접 사용자함수를 만들어서 사용하거나 제공하는 다른 함수를 사용하여 값이 숫자인지 확인을 할 수 있다.

다음 세 가지 방법을 이용하여 숫자여부를 확인할 수 있다.


방법1. REGEXP_INSTR (정규식 문자열 검색 함수, Oracle 10g 이상 사용가능)

   - REGEXP_INSTR([숫자값],'[^0-9]') = 0

   - 숫자가 아닌 값의 위치를 반환반환 값이 없으면 모든 문자가 숫자임

방법2. TRANSLATE (문자열 치환 함수, Oracle 8i 이상 사용가능)

   - TRANSLATE([숫자값],'A1234567890','A') IS NULL

   - 숫자를 찾아 치환 후 남은 문자가 존재 시 숫자가 아님

방법3. 사용자 정의 함수 생성 (IS_NUMBER)

   - IS_NUMBER([숫자값]) = 1

   - 숫자면 1, 문자면 0을 반환함


숫자값이 입력되는 문자(VARCHAR) 컬럼의 값을 연산을 해야하는 경우 숫자가 아닌 문자가 포함되어 있으면 오류가 발생한다.




방법1. REGEXP_INSTR (정규식 문자열 검색 함수, Oracle 10g 이상 사용가능)


WITH TEST_TABLE AS (

   SELECT 'SHIN RAMYUN' PRODUCT, '650' PRICE FROM DUAL UNION ALL

   SELECT 'NEOGURI' PRODUCT, '700' PRICE FROM DUAL UNION ALL

   SELECT 'JIN RAMEN' PRODUCT, '460' PRICE FROM DUAL

)

 

SELECT PRODUCT

           , TO_NUMBER(PRICE) PRICE

   FROM TEST_TABLE

 WHERE REGEXP_INSTR(PRICE,'[^0-9]') = 0




방법2. TRANSLATE (문자열 치환 함수, Oracle 8i 이상 사용가능)


WITH TEST_TABLE AS (

   SELECT 'SHIN RAMYUN' PRODUCT, '650' PRICE FROM DUAL UNION ALL

   SELECT 'NEOGURI' PRODUCT, '700' PRICE FROM DUAL UNION ALL

   SELECT 'JIN RAMEN' PRODUCT, '460' PRICE FROM DUAL

)

 

SELECT PRODUCT

           , TO_NUMBER(PRICE) PRICE

   FROM TEST_TABLE

 WHERE TRANSLATE(PRICE,'A1234567890','A') IS NULL




방법3. 사용자 정의 함수 생성 (IS_NUMBER)


--사용자 정의 함수 생성

CREATE OR REPLACE FUNCTION IS_NUMBER(str VARCHAR2) RETURN NUMBER

IS

   v_ret NUMBER;

BEGIN

   IF str IS NULL OR LENGTH(TRIM(str)) = 0 THEN

      RETURN 0;

   END IF;

   v_ret := TO_NUMBER(str);

   RETURN 1;


   EXCEPTION WHEN OTHERS THEN

      RETURN 0;

END ;


WITH TEST_TABLE AS (

   SELECT 'SHIN RAMYUN' PRODUCT, '650' PRICE FROM DUAL UNION ALL

   SELECT 'NEOGURI' PRODUCT, '700' PRICE FROM DUAL UNION ALL

   SELECT 'JIN RAMEN' PRODUCT, '460' PRICE FROM DUAL

)

 

SELECT PRODUCT

           , TO_NUMBER(PRICE) PRICE

   FROM TEST_TABLE

 WHERE IS_NUMBER(PRICE) = 1




  1. 오라클 10, 16진수(Decimal, Hex) 변환

    Date2018.10.27 Views4400
    Read More
  2. 오라클 랜덤함수

    Date2018.10.27 Views8000
    Read More
  3. 오늘을 기준으로 해당주(week)의 모든 일자조회

    Date2017.01.20 Views8399
    Read More
  4. 오라클] 숫자 체크 방법 (IS_NUMBER, IS_NUMERIC)

    Date2017.01.20 Views8833
    Read More
  5. 오라클 ORDER BY : 정렬

    Date2017.01.20 Views8299
    Read More
  6. 오라클 NULL : 값이 존재하지 않는 상태

    Date2017.01.20 Views7269
    Read More
  7. CentOS 6.5 에 Oracle Database 11g Release 2 설치하기

    Date2016.12.08 Views10915
    Read More
  8. RMAN 을 이용한 오라클 백업

    Date2016.12.08 Views8632
    Read More
  9. [Oracle] Rownum을 이용한 페이징 처리

    Date2016.12.08 Views12297
    Read More
  10. [Oracle] 테이블 스페이스 및 사용자 계정 생성 방법

    Date2016.12.08 Views8653
    Read More
  11. [Oracle] DB Export, Import 방법

    Date2016.12.08 Views12678
    Read More
  12. 오라클 백업 및 복구(Export, Import)

    Date2016.12.08 Views9835
    Read More
  13. 오라클 DB 백업과 복원

    Date2016.12.08 Views9988
    Read More
  14. 데이터베이스 백업하기 ( import : 가져오기 , export : 내보내기 )

    Date2016.12.08 Views9951
    Read More
  15. 컬럼의 값 만큼 행(Row)을 늘리기

    Date2016.12.08 Views20388
    Read More
  16. ROLLUP 합계, 소계 구하기 (GROUP BY)

    Date2016.12.08 Views11925
    Read More
  17. 여러개(다중) LIKE 검색 방법 (REGEXP_LIKE 함수)

    Date2016.12.08 Views12897
    Read More
  18. 숫자를 문자로 변환 시 소수점 처리 (TO_CHAR, FM)

    Date2016.12.08 Views15091
    Read More
  19. PL/SQL에서 자바(Java) 클래스(Class), 함수 실행 방법

    Date2016.12.08 Views9449
    Read More
  20. 숫자 체크 방법 (IS_NUMBER, IS_NUMERIC)

    Date2016.12.08 Views23247
    Read More
Board Pagination Prev 1 2 3 4 5 6 7 Next
/ 7

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved