본문 바로가기
Database/MSSQL

[MSSQL] MSSQL 칼럼 대소문자 구분 방식 (COLLATE, COLLATION)

by 챠챠12 2025. 5. 20.

기본적으로 MSSQL에서 대소문자 구분이 안됩니다.

이게 ORACLE과 의 차이라고 볼 수 있습니다. 

 

그래서 TABLE 생성 시 칼럼에 설정이 필요합니다~

그리고 SQL Server(=MSSQL)를 사용하다 보면 COLLATE Latin1_General_CI_AS와 같은 정렬 방식이 종종 등장합니다.

 

SELECT name
     , description 
FROM sys.fn_helpcollations();

 

 


🔍 1. 정렬 방식(Collation)이란?
정렬 방식(Collation)은 데이터베이스에서 문자 데이터를 정렬하고 비교하는 규칙을 정의하는 설정입니다.
예를 들어, a와 A를 동일하게 볼지 다르게 볼지, á와 a를 동일하게 취급할지 등을 결정합니다.

MSSQL에서는 데이터베이스, 테이블, 열(Column) 단위로 Collation을 설정할 수 있으며, 비교 시에는 컬럼의 Collation에 따라 정렬 및 조건문의 결과가 달라질 수 있습니다
 

 

🧠 2. Latin1_General_CI_AS 구성 해석

Latin1_General_CI_ASMSSQL에서 매우 일반적으로 사용되는 Collation입니다. 구성 요소를 하나씩 해석해보면 다음과 같습니다.

구성 요소의미설명
Latin1_General 문자 집합 언어 영어(라틴계열 언어)기준으로 정렬 방식입니다.
CI Case Insensitive 대소문자를 구분하지 않습니다. 예: 'A' = 'a'
AS Accent Sensitive 악센트를 구분합니다. 예: 'a' ≠ 'ấ', 'e' ≠ 'é'
 

💡 3. 예시로 이해하는 Latin1_General_CI_AS

예제 1: 대소문자 비교 (CI)

SELECT CASE WHEN 'Apple' = 'apple' THEN '같음' ELSE '다름' END -- 결과: 같음 (CI, 대소문자 구분 안 함)

예제 2: 악센트 비교 (AS)

SELECT CASE WHEN 'a' = 'ấ' THEN '같음' ELSE '다름' END -- 결과: 다름 (AS, 악센트 구분함)

 

반응형

🧩 4. 그럼 다른 Collation은?

Collation대소문자 구분악센트 구분특징

 

Latin1_General_CS_AS O (Case Sensitive) O (Accent Sensitive) 'A' ≠ 'a', 'a' ≠ 'ấ'
Latin1_General_CI_AI X X 'A' = 'a', 'a' = 'ấ'
Korean_Wansung_CI_AS X O 한글 정렬을 고려한 한국어용 설정
 
 

 

🔧 5. 테이블/DB정렬 방식 확인하기

데이터베이스의 Collation 확인

SELECT name, collation_name FROM sys.databases WHERE name = '내DB명'

특정 컬럼의 Collation 확인

SELECT name, collation_name FROM sys.columns WHERE object_id = OBJECT_ID('테이블명')

 

🚨 6. 정렬 방식이 다를 생기는 문제

컬럼 또는 변수와 컬럼 Collation다르면 오류발생합니다.

예시:

SELECT * FROM A JOIN B ON A.name = B.name 
-- 오류: "Cannot resolve collation conflict between..."

해결 방법:

 
-- 통일된 Collation으로 강제 변환 O
N A.name COLLATE Latin1_General_CI_AS = B.name COLLATE Latin1_General_CI_AS

 

마무리

  • Latin1_General_CI_ASMSSQL에서 가장 많이 쓰이는 기본 정렬 방식입니다.
  • 대소문자는 무시하지만(CI), 악센트는 구분(AS)합니다.
  • 다국어 또는 한글 정렬이 필요한 경우 Korean_Wansung_CI_AS 등을 고려해야 수도 있습니다.

Collation제대로 이해하고 활용하면, 문자열 비교 정렬 문제로 발생하는 오류를 미연에 방지할 있습니다.

 

 

- 참고용으로 MS 공식 문서 URL 

https://learn.microsoft.com/ko-kr/sql/t-sql/statements/collations?view=sql-server-ver16

 

COLLATE(Transact-SQL) - SQL Server

COLLATE 문은 데이터베이스 또는 테이블 열의 데이터 정렬을 설정하거나 SQL Database 엔진에서 데이터 정렬을 문자열 식으로 캐스팅합니다.

learn.microsoft.com

 

반응형

'Database > MSSQL' 카테고리의 다른 글

[MSSQL] MSSQL PARSENAME 함수 (MSSQL 전용)  (0) 2025.05.30

댓글