[MySQL] 정규식을 이용한 검색 regexp

in #mysql6 years ago

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 인젝션에 취약해지기 때문에
    정규식의 검색을 개발자가 미리 정한 테두리 안에서 행해져야 한다.
Sort:  

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

Do you like SteemitBoard's project? Vote for its witness and get one more award!

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:

The Meet the Steemians Contest is over - Results are coming soon ...

Support SteemitBoard's project! Vote for its witness and get one more award!

Congratulations @seobangnim! You received a personal award!

Happy Birthday! - You are on the Steem blockchain for 2 years!

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!

Coin Marketplace

STEEM 0.21
TRX 0.20
JST 0.033
BTC 96864.77
ETH 3282.21
USDT 1.00
SBD 3.01