Oracle

오라클 정규식 활용

스마트큐브 2016. 11. 7. 16:12


-- 날짜 형식 체크 정규식 


ymd 는 YYYYMMDD 형식의 데이터 필드 

select ymd,

 (CASE WHEN ymd IS NULL THEN 'NULL' 

 WHEN NOT REGEXP_LIKE(ymd, '^[0-9]{4}(((0[13578]|(10|12))(0[1-9]|[1-2][0-9]|3[0-1]))|(02(0[1-9]|[1-2][0-9]))|((0[469]|11)(0[1-9]|[1-2][0-9]|30)))$')  THEN '날짜형식이 틀림'  

  WHEN NOT REGEXP_LIKE(SUBSTR(ymd, 1, 4), '((1[6-9]|[2-9]\d)([02468][48]|[2468][048]|[13579][26]))|((16|[2468][048]|[3579][26])00)') AND SUBSTR(ymd, 5, 2) = '02' AND SUBSTR(ymd, 7, 2) = '29'  THEN '평년인데 2월달이 29일임' 

 ELSE '정상' 

 END) AS DATE_CHECK

from 테이블 ;


출처 

http://blog.daum.net/_blog/BlogTypeView.do?blogid=0ePSf&articleno=52