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
최신 댓글