|
|
금일 아침에 하나의 업무가 떨어졌습니다. 검색에서 대소문자 구분하지 않고 검색되는 것입니다.
테이블의 다른 컬럼은 영향을 주지 않고 한 컬럼에만 대하여 대소문자를 구분하지 않게끔 할려면 어떻게 해야 될까요??
한번 알아보도록 하겠습니다.
모든 "문자" 컬럼(즉, CHAR, VARCHAR,또는 TEXT 타입의 컬럼)은 컬럼 문자 셋과 컬럼 Collation을 가지고 있습니다.
▶옵션 구문
col_name {CHAR | VARCHAR | TEXT} ( col_length) [CHARACTER SET charset_name] [COLLATE collation_name]
▶예문
create table test ( column1 VARCHAR(5) CHARACTER SET euckr COLLATE euckr_bin );
※ MySQL은 아래와 같은 방식으로 컬럼 문자 셋과 콜레션을 선택합니다.
- 만일 CHARACTER SET X와 COLLATE Y를 모두 지정하면, 문자셋은 X가 되고, 콜레션은 Y가 됩니다.
- 만일 CHARACTER SET X는 지정을 하고 COLLATE는 지정하지 않으면, 문자셋은 X가 되고 콜레션은 디폴트를 사용하게 된다.
- 만일 COLLATE Y는 지정을 하되, CHARACTER SET는 지정하지 않으면, 문자셋은 Y와 관련된 것을 사용하고 콜레션은 Y를 사용하게 된다.
- 아무것도 지정하지 않는 경우에는 테이블 문자셋과 콜레션을 사용하게 된다.
UTF를 하던 euc-kr 을 하던 Collation의 종류가 크게 2가지로 나뉘게 됩니다.
bin이 붙는 경우와 붙지 않는 경우입니다.
- bin이 붙는 경우 : 문자를 코드화하여 비교하게 된다. 즉 a와 A는 코드가 다르므로 다른 문자로 인식된다.(예: euckr_bin)
- bin이 붙지 않는 경우 : 문자 그대로 비교하게 되는데, 대소문자를 가리지 않는다. 즉 a와 A는 동일한 문자이다. (예: euckr_korean_ci)
이 차이점은 매우 중요하며, 정렬과 검색에 바로 적용이 됩니다.
'Database > MySQL' 카테고리의 다른 글
[mysql] date, time과 unix_timestamp (0) | 2009.03.10 |
---|---|
mysql에서 데이터베이스 추가 및 권한 설정 (1) | 2009.03.05 |
Mysql 사용자 계정 추가하기 (1) | 2009.02.26 |
MySQL 삭제하기 (0) | 2009.02.26 |
Mysql 백업 & 복원 (0) | 2009.02.26 |