정규식에 대한 질문이 있습니다. 0 4 1,640

by 픽칼 [2016.08.18 15:40:11]


안녕하세요. 오라클 정규식을 활용하여 문자열 치환을 하고 싶은 데 이해가 부족하여 작성이 잘 안 되네요.

ex) +1.234+1 ==> +1.2341

     -1.234+1  ==> -1.2341

      1.234+1  ==> 1.2341

예를 들어 선두에는 무조건 +, -, null이 올 수 있습니다.

그 다음부터는 숫자와 소수점만 나와야 합니다.

이렇게 패턴을 구성할 수 있는 지 궁금합니다.

현재 regexp_replace로 하고 있는 데 잘 안 되네요.

많은 답변 부탁드립니다. 감사합니다.

추가) 답변 감사드립니다.

        제 질문에 몇가지 빠진 패턴이 있습니다.

        +1.233A12 ==> +1.23312

        +1.2+A ==> +1.2

        -1.2+*  ==> -1.2

        1.2*3A  ==> 1.23

        즉) 맨 첫번째에는 +, -, NUll만 올 수 있고 그 다음은 숫자와 소수점만 올 수 있습니다.

             그 이외에 문자나 특수 문자는 삭제되어야 합니다.

by 탱 [2016.08.18 17:36:30]
WITH T AS
(
    SELECT '+1.234+1' AS REG FROM DUAL UNION ALL
    SELECT '-1.234+1' AS REG FROM DUAL UNION ALL
    SELECT '1.234+1'  AS REG FROM DUAL
)
SELECT REG 
     , CASE WHEN SUBSTR(REG,1,1) = '+' OR SUBSTR(REG,1,1) = '-'
            THEN SUBSTR(REG,1,1)||REGEXP_REPLACE(SUBSTR(REG,2,LENGTH(REG)-1),'[+]','')
            ELSE REGEXP_REPLACE(REG,'[+]','')
       END REG_REPLACE
FROM T;

 


by 랑에1 [2016.08.18 17:41:21]
REGEXP_REPLACE(REG, '[+|-]', '', 2, 1)

요렇게?

 


by 탱 [2016.08.18 17:49:14]

엄청 간단하네요 ~ ㅋㅋㅋ

정규식함수에 대해서 아직 잘몰라서 저렇게 구현했는데.. 더 알아갑니다~


by 랑에1 [2016.08.19 11:13:57]
REGEXP_REPLACE(REG, '[^0-9|.]', '', 2)

이렇게하시면 될 것 같은데

제가 미천하여 모범답안이 아닐수도 있습니다 ㅎㅎ

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입