문장속에 IP주소만 추출하기

WITH TMP AS
     (SELECT '홍길동의 IP주소는 323.211.123.11 입니다' IP FROM DUAL UNION ALL
      SELECT '앞에 다른 123 숫자가 포함되어 있을 때 IP : 10.10.10.1 입니다..' FROM DUAL UNION ALL
      SELECT '유효하지 않은 IP : 310.10.10.1 입니다..' FROM DUAL UNION ALL
      SELECT '이것도 유효하지 IP : 10.10.10.432 입니다.' FROM DUAL UNION ALL
      SELECT '1.2.3.123 도 추출되어야 하는 IP입니다.' FROM DUAL UNION ALL
      SELECT '범위를 벗어난 IP 100.256.1.1 은 제외되어야 합니다.' FROM DUAL)
SELECT TRIM
           (REGEXP_SUBSTR
                (IP
               , '(^|[^0-9])(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])($|[^0-9])'
               , 1)) IP
  FROM TMP
 WHERE REGEXP_LIKE
           (IP
          , '(^|[^0-9])(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])($|[^0-9])');
한 문장안에 여러개의 IP주소가 포함되어 있을 경우 첫 번째IP주소만 나옴 관련 URL : http://www.gurubee.net/article/67512

You may also like...

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다