[MySQL] 정규식을 이용한 검색 regexp
regexp 란?
like 검색과는 달리 정규식을 이용한 검색 방식을 말한다.
regexp는 우리에게 like보다 좀 더 다양한 검색을 할 수 있도록 도움을 준다.
(관련 URL : http://dev.mysql.com/doc/refman/5.1/en/regexp.html )
regexp 를 이용한 검색의 예제
select * from test where name regexp '가'
name 필드에 '가'를 포함한 모든 레코드를 출력한다.
(select * from test where name like '%가%') 의 쿼리와 동일하다
select * from test where name regexp '가|나|다|라'
name 필드에 가 또는 나 또는 다 또는 라 를 포함한 레코드를 모두 출력한다.
(select * from test where name like '%가%' or name like '%나%' or name like '%다%' or name like '%라%') 쿼리와 동일
select * from test where name regexp '[가-힇]'
name 필드에 한글이 포함된 모든 레코드를 검색한다.
select * from test where name regexp '^[가-힇]+$'
name 필드에 한글로만 구성된 모든 레코드를 검색한다.
regexp 정규식 기호에 대한 간단한 소개
. : 문자 하나를 나타낸다.
* : 앞에 나온 문자의 0개 이상 반복을 나타낸다.
^ : 문자열의 처음을 나타낸다.
$ : 문자열의 끝을 나타낸다.
[.] : 괄호 안의 문자열 일치를 확인한다.
{.} : 반복을 나타낸다.
| : or 를 나타낸다.
- 참고사항
정규식의 검색을 이용할때 절대 사용자에게 정규식 기능을 제공해선 안된다.
각 종 오류를 포함할 수 있고 sql 인젝션에 취약해지기 때문에
정규식의 검색을 개발자가 미리 정한 테두리 안에서 행해져야 한다.
Congratulations @seobangnim! You have completed some achievement on Steemit and have been rewarded with new badge(s) :
Award for the number of upvotes received
Click on any badge to view your own Board of Honor on SteemitBoard.
For more information about SteemitBoard, click here
If you no longer want to receive notifications, reply to this comment with the word
STOP
Congratulations @seobangnim! You have received a personal award!
1 Year on Steemit
Click on the badge to view your Board of Honor.
Do not miss the last post from @steemitboard:
Congratulations @seobangnim! You received a personal award!
You can view your badges on your Steem Board and compare to others on the Steem Ranking
Vote for @Steemitboard as a witness to get one more award and increased upvotes!