[MySQL] 레코드의 대소문자 구분하기

Posted at 2012.10.06 19:55 | Posted in 프로그래밍

회원가입시 아이디 중복검사를 할 때, 완벽히 동일한 아이디인지 아닌지 구분해야 할 때 꼭 필요한 방법이다. MySQL에서 기본적으로 대소문자를 구분하지 않음으로서 발생하는 무차별대입의 횟수 감소도 예방할 수 있다.

대소문자 구분하여 저장하는 경우

데이터정렬방식을 _bin으로 바꿔줌으로 대소문자 구분을 할 수 있다.

이러한 테이블에서 대소문자 구분없이 레코드를 찾으려면 cast(COLUMN as char)함수를 사용하면 된다.

mysql> select * from osu_beatmap_artists where cast(name as char) like "%miku%";
+------+---------------------------------------------+
| idx  | name                                        |
+------+---------------------------------------------+
|  926 | Hatsune Miku                                |
| 3188 | Hatsune miku                                |
| 1096 | IOSYS feat. Hatsune Miku                    |
...
+------+---------------------------------------------+
29 rows in set (0.00 sec)

대소문자 구분하여 검색하는 경우

열의 데이터정렬방식이 _bin인 경우에는 위 함수를 쓰지 않아도 대소문자를 구분하여 검색하지만, 그렇지 않은 열은 binary(COLUMN) 혹은 cast(COLUMN as binary) 함수를 사용해야된다.

mysql> select * from osu_beatmap_artists where binary(name) like "%miku%";
+------+--------------+
| idx  | name         |
+------+--------------+
| 3188 | Hatsune miku |
+------+--------------+
1 row in set (0.00 sec)
저작자 표시 비영리
신고

Name __

Password __

Link (Your Website)

Comment