Mysql select 문법에서 like 와 regexp 의 차이점..

gyxor의 이미지

mysql> select * from tt01 where name regexp 'de$';
+------+------+
| name | age  |
+------+------+
| ede  |   32 |
| dde  |   46 |
+------+------+
2 rows in set (0.00 sec)

mysql> select * from tt01 where name like '%de';
+------+------+
| name | age  |
+------+------+
| ede  |   32 |
| dde  |   46 |
+------+------+
2 rows in set (0.00 sec)

이렇게 두가지를 사용해서 검색을 했는데요
책에선
[Like를 사용할경우 값을 찾을수 없음을 기억하라..]
라고 나와있는데요.. 그게 무슨의미인지..
Like 와 regexp 의 차이점은 무엇인지 알고싶습니다.

alfalf의 이미지

MySQL에서 like는 "%"를 이용하여 불특정 문자를 나타낼때 사용하지만
regex는 검색에 정규 표현식을 사용하여 보다 복잡한 문자열 검색을 수행할 수 있습니다.
정규표현식은 http://kldp.org/HOWTO/html/Adv-Bash-Scr-HOWTO/x10468.html를 보시면 간략히 나와있네요.

impactbar의 이미지

gyxor님께서 올려주신 정규표현식과 like 구문은 동일한 구문입니다.

다만

정규표현식은 문자가 나타는 패턴을 약간의 문자식으로 편리하게

사용할 수 있도록 만든 것이며

like 구문은 쉘에서의 *,. 와 동일한 역할을 수행하게 하는 문장이죠

mysql> select * from tt01 where name regexp '^[0-9][0-9]*.*de$'

이렇게 쓰면 name 이 숫자로 시작하고 끝이 de로 끝나는 문자열을 검색해

주죠.

like로는 못하죠. ^^;