-
Mysql 내 컬럼 내 특정값을 추출해야할 때가 있다.
이런 경우 정규식을 이용하거나 substring_index 함수를 활용하여 값을 추출할 수 있다.
예를 들어 json양식으로 된 order_json 이라는 컬럼에 데이터가 아래와 같이 들어가 있다고 가정을 해보자
{"odNo":"123123" , "odrNm":"홍길동"}
이중 주문번호에 해당하는 값만 추출을 하고 싶으면 정규식으로는 ('"odNo:"?')\("[0-9]+")을 하게 되면 "odNo:"123123"이 나오게 될 것이다
이를 다시 한번 정규 표현식을 통해 숫자부분('[0-9]')만 추출을 할 수 있다
select REGEXP_SUBSTR(REGEXP_SUBSTR(order_json,'("odNo":?)\([0-9]+)')'),'[0-9]+') from order_table ;
위 정규식에 대한 함수를 구분지어 살펴보자
1.()의 경우 그룹을 구분 짓기 위해 사용한다
2.[0-9]의 경우 0~9까지의 숫자를 나타낸다
3.+의 경우 그룹내 요소의 전체를 나타낸다.
4.?의 경우 존재 여부를 나타낸다
5.\의 경우 and 조건을 나타낸다
위 내용을 통해서 설명해보자면 "odNo":가 참이면 뒤에 나오는 요소가 숫자인 요소를 가지고 온 후 숫자인 요소만 추출을 해라는 의미로 해석 될 수 있다.