Mysql 에서의 정규표현식
페이지 정보
작성자 미친새 작성일 20-02-21 11:47 조회 19,595 댓글 0본문
얼마전 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 이기에..
아래와 같은 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 이기에..
댓글목록 0
등록된 댓글이 없습니다.