[오라클|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일 경우 숫자
'Database 빌드업 > Oracle' 카테고리의 다른 글
[오라클|Oracle] 에러 코드 ORA-01847: day of month must be between 1 and last day of month (0) | 2023.09.01 |
---|---|
[오라클|Oracle] 에러 코드 ORA-01476 제수가 0 입니다. (0) | 2023.08.28 |