MSSQL 대소문자 구분 – COLLATE

MSSQL 대소문자 구분여부는 COLLATION 에 의해서 결정됩니다. COLLATION 에 Korean_Wansung_CI_AS 와 같이 CI 가 들어가있으면 구분을 안하고, CS 가 들어가있으면 구분합니다. CS 는 Case Sensitive 이고, CI 는 Case Insensitive 입니다.

Collation 을 확인하는 방법

데이터베이스 기본값과 테이블 열의 Collation 은 아래 구문을 통해서 확인할 수 있습니다.

-- 데이터베이스 기본값
SELECT CONVERT (nvarchar(128), DATABASEPROPERTYEX('데이터베이스이름', 'collation'));
-- 테이블 
SP_HELP 테이블명

MSSQL 대소문자 구분을 쿼리 수준에서 변경하는 방법

테이블 컬럼은 대소문자를 구분하지 않는데, 쿼리에서는 대소문자를 구분해야 하는 경우가 있을 수 있습니다.
아래 테이블에서 c2 컬럼의 값이 a 인 행을 찾는 쿼리입니다. ( 데이터베이스 및 테이블의 Collation 에는 영향이 없습니다. )

mssql 대소문자 구분을 쿼리수준에서 변경
SELECT * FROM T WHERE C2 Collate Korean_Wansung_CS_AS = 'a'

위와 같이 C2 열의 Collation 을 대소문자를 구분하는 Korean_Wansung_CS_AS 로 변환한 후에 “= a” 조건을 넣어주면 되는데, C2 전체 열에 Collation 의 변환이 일어나므로, 데이터 양이 많다면 속도가 상당히 느려질 수 있습니다.
반대의 경우라면 Collate 절의 CS 를 CI 로 바꿔주면 대소문자를 구분하지 않게 됩니다.

Collate MS 문서 링크
Collation MS 문서 링크

Comments

No comments yet. Why don’t you start the discussion?

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다