Mysql 에서의 정규표현식 > 질문답변

본문 바로가기
사이트 내 전체검색

질문답변

Mysql 에서의 정규표현식

페이지 정보

profile_image
작성자 미친새
댓글 0건 조회 19,655회 작성일 20-02-21 11:47

본문

얼마전 Mysql에서 정규표현식을 사용할일이 생겼다.
아래와 같은 field 가 있어서.. 해당 필드를 데이터를 가공하여 숫자만 뽑고 싶었다.

pNum
02-333-4444
031.444.5555
0516667777

해당 데이터 결과값을 PHP에서 가공하는 것보다도 Mysql에서 처리하는게 빠를듯해서..
Mysql 에서는 REGEXP 를 통해 정규표현식을 출력한다..

그래서 아래와 같은 쿼리를 날리면 되지 않을까 생각을 했었다.
select replace(pNum,pNum REGEXP '[^0-9]+','') from table
결론부터 이야기 하자면 안된다.
REGEXP는 정규표현식을 지원하되 결과값으로 0,1 만을 내 놓는다..
즉 비교는 가능하지만 치환이 불가능하다..
그렇다면...
select replace(pNum,'[^0-9]+','') from table 이렇게 하면 되지않을까 라고 생각할수도 있지만..
이또한 불가능하다 Mysql의 replace 함수는 정규표현식을 지원하지 않기 때문이다.

아직 Mysql 은 정규표현식을 통한 치환이 안되는거 같다.

어떤 이는 위의 쿼리에서 조건을 주어서 case 문 같은것으로 하면 되지 않겠냐라고 하겠지만..
이는 위에서 언급한것처럼 속도를 빠르게 하기 위함인데...
case 문을 준다는 것은 쿼리의 속도를 상당히 떨어뜨릴것이다..

결국 PHP에서 eregi_replace(\"[^0-9]+\",\"\",$value); 와 같은 형식으로 하게되었다.
하지만 곧 Mysql도 언젠가는 가능하지 않을까? 생각된다.
그만큼 빨리 바뀌는 Mysql 이기에..

댓글목록

등록된 댓글이 없습니다.

회원로그인

회원가입

사이트 정보

회사명 : 회사명 / 대표 : 대표자명
주소 : OO도 OO시 OO구 OO동 123-45
사업자 등록번호 : 123-45-67890
전화 : 02-123-4567 팩스 : 02-123-4568
통신판매업신고번호 : 제 OO구 - 123호
개인정보관리책임자 : 정보책임자명

공지사항

  • 게시물이 없습니다.

접속자집계

오늘
1,037
어제
1,763
최대
5,296
전체
1,482,094
Copyright © 소유하신 도메인. All rights reserved.