2020. 1. 23. 10:15

[MSSQL] COLLATE 대소문자 구분

COLLATE 절은 char, varchar, text, nchar, nvarcharntext 데이터 형식에만 적용할 수 있습니다.

where 조건에서 적용

-- 대소문자 구문(영어/미국)
SELECT TOP(1) * FROM tblUsers WHERE username = ? COLLATE SQL_Latin1_General_CP1_CS_AS
-- 대소문자 구분안함(영어/미국)
SELECT TOP(1) * FROM tblUsers WHERE username = ? COLLATE SQL_Latin1_General_CP1_CI_AS

table 생성시에 설정하거나 alter table로 변경

ALTER TABLE Table1
ALTER COLUMN Column1 VARCHAR(200)
COLLATE SQL_Latin1_General_CP1_CS_AS -- 대소문자 구분(영어/미국)

ALTER TABLE Table1
ALTER COLUMN Column1 VARCHAR(200)
COLLATE SQL_Latin1_General_CP1_CI_AS -- 대소문자 구분안함(영어/미국)

사용가능한 Collation 명칭 참고

COLLATE SQL_Latin1_General_CP1_CS_AS

Codepage 데이터 정렬에 사용되는 코드 페이지를 표시하는 1~4자리 숫자를 지정합니다. CP1은 코드 페이지 1252를 지정하며 다른 모든 코드 페이지에 대해서는 완전한 코드 페이지 번호를 지정합니다. 예를 들어 CP1251은 코드 페이지 1251을 지정하며 CP850은 코드 페이지 850을 지정합니다.

CaseSensitivity CI는 대/소문자를 구분하지 않도록 지정하고 CS는 대/소문자를 구분하도록 지정합니다.

AccentSensitivity AI는 악센트를 구분하지 않도록 지정하고 AS는 악센트를 구분하도록 지정합니다.

BIN 사용할 이진 정렬 순서를 지정합니다.


사용가능한 Collation 확인
SELECT name, description FROM fn_helpcollations()

SQL_Latin1_General_CP1_CS_AS is the default collation for the English (United States) locale
SQL_Latin1_General_CS_AS is the default collation for any other English locale, such as English (United Kingdom)