방명록
- [Oracle] 숫자 체크 방법2021년 01월 13일 11시 52분 48초에 업로드 된 글입니다.작성자: 봉주니
오라클에서 숫자인지 확인하는 방법은 아래와 같이 간단합니다.
방법1. REGEXP_INSTR (정규식 문자열 검색 함수, Oracle 10g 이상 사용가능)
- REGEXP_INSTR([숫자값],'[^0-9]') = 0
- 숫자가 아닌 값의 위치를 반환. 반환 값이 없으면 모든 문자가 숫자임
방법2. TRANSLATE (문자열 치환 함수, Oracle 8i 이상 사용가능)
- TRANSLATE([숫자값],'A1234567890','A') IS NULL
- 숫자를 찾아 치환 후 남은 문자가 존재 시 숫자가 아님
예제)
WITH TEST_TB AS ( SELECT 'A' CODE, '1000' PRICE FROM DUAL UNION ALL SELECT 'B' CODE, '2000' PRICE FROM DUAL UNION ALL SELECT 'C' CODE, '1000A' PRICE FROM DUAL ) SELECT * FROM TEST_TB;
결과)
방법1. REGEXP_INSTR
- REGEXP_INSTR(PRICE,'[^0-9]') 정수만 체크
- REGEXP_INSTR(PRICE,'^[+-]?\d*(\.?\d*)$') 부호(+,-) , 소수점까지 체크
WITH TEST_TB AS ( SELECT 'A' CODE, '1000' PRICE FROM DUAL UNION ALL SELECT 'B' CODE, '2000' PRICE FROM DUAL UNION ALL SELECT 'C' CODE, '1000A' PRICE FROM DUAL ) SELECT * FROM TEST_TB WHERE REGEXP_INSTR(PRICE,'[^0-9]') = 0
결과)
방법2. TRANSLATE
WITH TEST_TB AS ( SELECT 'A' CODE, '1000' PRICE FROM DUAL UNION ALL SELECT 'B' CODE, '2000' PRICE FROM DUAL UNION ALL SELECT 'C' CODE, '1000A' PRICE FROM DUAL ) SELECT * FROM TEST_TB WHERE TRANSLATE(PRICE,'A1234567890','A') IS NULL
결과)
반응형'Oracle' 카테고리의 다른 글
[Oracle] ORA-28365: 전자 지갑이 열려 있지 않습니다. (0) 2021.12.08 [Oracle] Sql Developer (0) 2021.08.18 ORA-00984: 열을 사용할 수 없습니다 (0) 2021.01.07 [오라클] 프로시저 IN,OUT 파라미터있는 경우 (0) 2020.12.19 Nested Loop, Hash Join (0) 2020.12.09 다음글이 없습니다.이전글이 없습니다.댓글