본문 바로가기
Database 빌드업/Oracle

[오라클|Oracle] 숫자인 데이터 검색하기

by 예스민 2023. 8. 30.

[오라클|Oracle] 숫자인 데이터 검색하기

오라클(Oracle)에서 값이 숫자인 데이터만 검색하는 방법을 알아보겠습니다. 

아래 3가지 방법을 이용하여 숫자로만 이루어진 데이터를 확인할 수 있습니다. 

 

● regexp_instr 함수 이용하여 숫자 데이터 검색
● translate(문자열 치환 함수) 이용하여 숫자 데이터 검색
● IS_NUMBER 사용자 정의함수 생성하여 숫자 데이터 검색

 

방법

 

1. REGEXP_INSTR을 이용하여 숫자인 데이터 검색

regexp_instr( 칼럼명, '[^0-9]') = 0 

숫자가 아닌 값의 위치를 반환함, 0이면 모든 값이 숫자임

 

select city, num 

from

(

    select '서울' city, '02' num from dual union all

    select '인천' city, '032' num from dual union all

    select '부산' city, '#051' num from dual 

)

where 1=1

and regexp_instr( num, '[^0-9]' )  = 0 ; -- 0이면 숫자

 

 

 

2. TRANSLATE( 문자열 치환 함수 )을 이용하여 숫자인 데이터 검색

 

select city, num 

from 

(

    select '서울' city, '02' num from dual union all

    select '인천' city, '032' num from dual union all

    select '부산' city, '#051' num from dual

)

where 1=1

and translate( num, 'A1234567890', 'A' ) is null ; --num 칼럼의 값이 null 일경우 숫자

 

 

 

3. IS_NUMBER 사용자 정의 함수 생성하여 숫자인 데이터 검색

 

-- 함수생성

CREATE OR REPLACE FUNCTION IS_NUMBER(str VARCHAR2) RETURN NUMBER

IS

    v_num NUMBER;

 

BEGIN

    v_num := TO_NUMBER(str);

    RETURN 1;

 

    EXCEPTION WHEN OTHERS THEN

    RETURN 0;

END;

 

--sql

select city, num 

from

(

    select '서울' city, '02' num from dual union all

    select '인천' city, '032' num from dual union all

    select '부산' city, '#051' num from dual

)

where 1=1

and IS_NUMBER(num) = 1;  -- return 값이 1일 경우 숫자