'collation'에 해당되는 글 1건

  1. 2009.05.04 [MySQL] 테이블 컬럼의 Collation 변경 및 종류


금일 아침에 하나의 업무가 떨어졌습니다. 검색에서 대소문자 구분하지 않고 검색되는 것입니다.

테이블의 다른 컬럼은 영향을 주지 않고 한 컬럼에만 대하여 대소문자를 구분하지 않게끔 할려면 어떻게 해야 될까요??

한번 알아보도록 하겠습니다.

모든 "문자" 컬럼(즉, 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은 아래와 같은 방식으로 컬럼 문자 셋과 콜레션을 선택합니다.

  1. 만일 CHARACTER SET X와 COLLATE Y를 모두 지정하면, 문자셋은 X가 되고, 콜레션은 Y가 됩니다.
  2. 만일 CHARACTER SET X는 지정을 하고 COLLATE는 지정하지 않으면, 문자셋은 X가 되고 콜레션은 디폴트를 사용하게 된다.
  3. 만일 COLLATE Y는 지정을 하되, CHARACTER SET는 지정하지 않으면, 문자셋은 Y와 관련된 것을 사용하고 콜레션은 Y를 사용하게 된다.
  4. 아무것도 지정하지 않는 경우에는 테이블 문자셋과 콜레션을 사용하게 된다.


 

UTF를 하던 euc-kr 을 하던 Collation의 종류가 크게 2가지로 나뉘게 됩니다.

bin이 붙는 경우와 붙지 않는 경우입니다.

  • bin이 붙는 경우 : 문자를 코드화하여 비교하게 된다. 즉 a와 A는 코드가 다르므로 다른 문자로 인식된다.(예: euckr_bin)
  • bin이 붙지 않는 경우 : 문자 그대로 비교하게 되는데, 대소문자를 가리지 않는다. 즉 a와 A는 동일한 문자이다. (예: euckr_korean_ci)

이 차이점은 매우 중요하며, 정렬과 검색에 바로 적용이 됩니다.


출처: http://blog.tinyfall.net/192

 

'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
Posted by Finebe
,