1234-4567
55-9900
-123
123-456 기타
궁금한 사항이 2가지인데요..
첫째는 - 와 숫자로만 구성된 컬럼인지 아닌지 구분을 했으면 합니다.
다른 하나는 숫자와 - 로만 구성됬을때, 컬럼 내용을 - 기준으로 두개로 나눴으면 합니다.
찾아보는데 쉽게 답이 안 나오네요..
답변 부탁드립니다.
WITH TMP AS( SELECT '1234-4567' AS STR FROM DUAL UNION ALL SELECT '55-9900' FROM DUAL UNION ALL SELECT '-123' FROM DUAL UNION ALL SELECT '123-456A' FROM DUAL ) SELECT DECODE(REGEXP_INSTR(STR,'[^[:digit:] | \-]'),0,'Y','N') AS CUL_TYPE ,REGEXP_SUBSTR (STR, '[^-]+', 1, 1) F_STR ,REGEXP_SUBSTR (STR, '[^-]+', 1, 2) S_STR FROM TMP;
고수님께서 더 멋진 쿼리 짜 주실거라 믿고 도움이나마 되시라고 댓글 답니다.
정규 표현식이 아닌 함수만으로 짜보았습니다. 9i 이상이면 돌아갑니다.
WITH TMP AS
(SELECT '1234-4567' AS STR FROM DUAL
UNION ALL
SELECT '55-9900' FROM DUAL
SELECT '-123' FROM DUAL
SELECT '123-456A' FROM DUAL)
SELECT SUBSTR (str, 1, INSTR (str, '-') - 1)
,SUBSTR (str, INSTR (str, '-') + 1)
,NVL2 (REPLACE (TRANSLATE (str, '0123456789', '-'), '-'), '문자', '숫자')
FROM tmp