728x90
반응형
728x170
■ 숫자를 체크하는 방법을 보여준다.
▶ REGEXP_INSTR 함수 사용하기 ; Oracle 10g 이상 버전부터 사용 가능하다. (SQL)
WITH TEST_TABLE AS
(
SELECT '신라면' PRODUCT, '650' PRICE FROM DUAL UNION ALL
SELECT '너구리' PRODUCT, '700' PRICE FROM DUAL UNION ALL
SELECT '진라면' PRODUCT, '$460' PRICE FROM DUAL
)
SELECT
PRODUCT
,TO_NUMBER(PRICE) PRICE
FROM TEST_TABLE
WHERE REGEXP_INSTR(PRICE, '[^0-9]') = 0; -- 정수만 체크하는 경우
▶ REGEXP_INSTR 함수를 사용해 부호(+, -), 소수점까지 체크하는 경우 (SQL)
WITH TEST_TABLE AS
(
SELECT '신라면' PRODUCT, '650' PRICE FROM DUAL UNION ALL
SELECT '너구리' PRODUCT, '700' PRICE FROM DUAL UNION ALL
SELECT '진라면' PRODUCT, '$460' PRICE FROM DUAL
)
SELECT
PRODUCT
,TO_NUMBER(PRICE) PRICE
FROM TEST_TABLE
WHERE REGEXP_INSTR(PRICE, '^[+-]?\d*(\.?\d*)$') = 1;
▶ TRANSLATE 함수 사용하기 ; Oracle 8i 이상 버전에서 사용 가능하다. (SQL)
WITH TEST_TABLE AS
(
SELECT '신라면' PRODUCT, '650' PRICE FROM DUAL UNION ALL
SELECT '너구리' PRODUCT, '700' PRICE FROM DUAL UNION ALL
SELECT '진라면' PRODUCT, '$460' PRICE FROM DUAL
)
SELECT
PRODUCT
,TO_NUMBER(PRICE) PRICE
FROM TEST_TABLE
WHERE TRANSLATE(PRICE, 'A1234567890', 'A') IS NULL;
▶ 사용자 정의 함수 사용하기 (IS_NUMBER) (SQL)
CREATE OR REPLACE FUNCTION IS_NUMBER(P_SOURCE VARCHAR2) RETURN NUMBER
IS
V_RESULT NUMBER;
BEGIN
IF P_SOURCE IS NULL OR LENGTH(TRIM(P_SOURCE)) = 0 THEN
RETURN 0;
END IF;
V_RESULT := TO_NUMBER(P_SOURCE);
RETURN 1;
EXCEPTION WHEN OTHERS THEN
RETURN 0;
END;
WITH TEST_TABLE AS
(
SELECT '신라면' PRODUCT, '650' PRICE FROM DUAL UNION ALL
SELECT '너구리' PRODUCT, '700' PRICE FROM DUAL UNION ALL
SELECT '진라면' PRODUCT, '$460' PRICE FROM DUAL
)
SELECT
PRODUCT
,TO_NUMBER(PRICE) PRICE
FROM TEST_TABLE
WHERE IS_NUMBER(PRICE) = 1;
728x90
반응형
그리드형(광고전용)
'Database > Oracle' 카테고리의 다른 글
[DATABASE/ORACLE] 특정일 기준으로 해당 주(WEEK)의 모든 날짜 구하기 (0) | 2017.11.25 |
---|---|
[DATABASE/ORACLE] WM_CONCAT 함수 : 여러 행의 데이터를 한 컬럼으로 합치기 (0) | 2017.11.25 |
[DATABASE/ORACLE] XMLAGG, XMLELEMENT 함수를 사용해 여러 행의 데이터를 한 컬럼으로 합치기 (0) | 2017.11.25 |
[DATABASE/ORACLE] INSTR 함수 : IN절 동적 사용 구현하기 (0) | 2017.11.25 |
[DATABASE/ORACLE] REGEXP_SUBSTR, REGEXP_COUNT 함수를 사용해 IN절 동적 사용 구현하기 (0) | 2017.11.25 |
[DATABASE/ORACLE] REGEXP_LIKE 함수 : 다중 LIKE 사용하기 (0) | 2017.11.25 |
[DATABASE/ORACLE] NVL 함수 : NULL 값 치환하기 (0) | 2017.11.25 |
[DATABASE/ORACLE] NVL2 함수 : NULL 값 치환하기 (0) | 2017.11.25 |
[DATABASE/ORACLE] LPAD 함수 : 일정 길이 문자열을 구하기 위해 왼쪽부터 특정 문자 채우기 (0) | 2017.11.25 |
[DATABASE/ORACLE] POSSTR 함수 : 소스 문자열에서 지정 문자열이 시작하는 위치 구하기 (0) | 2017.11.25 |
댓글을 달아 주세요