본문 바로가기
데이터베이스/MSSQL

Collation(문자 정렬) 충돌 해결 방법

by Dokon Jang 2016. 1. 18.
반응형

테이블의 컬럼의 Collation(문자정렬)이 서로 다른 경우 아래와 같이 오류가 발생합니다.

 

Cannot resolve the collation conflict between "Korean_Wansung_CI_AS" and "SQL_Latin1_General_CP1_CI_AS" in the equal to operation.

 

1. 현재 데이터 베이스의 기본 Collation(문자정렬) 확인 하기

SELECT SERVERPROPERTY('collation')

 

 

 

※ MSSQL의 전체 Collation 조회하기

SELECT * FROM ::fn_helpcollations()

 

 

2. 컬럼에 특정 Collation(문자정렬)을 지정하여 테이블 생성하기

  - 아래의 쿼리는 한글완성형으로 Collation(문자정렬)을 컬럼에 지정한 예입니다.

CREATE TABLE [TABLE_NAME](
    [COLUMN_NAME] [nvarchar](50) COLLATE Korean_Wansung_CI_AS
)
 

 

3. Collation(문자정렬) 충돌이 발생하면 아래와 같이 WHERE 절의 쿼리를 수정하면 됩니다.

  - TB_TABLE1의 NAME 컬럼은 데이터베이스의 기본 Collation(문자정렬)이고, TB_TABLE2의 NAME 컬럼의 Collation(문자정렬)이 Korean_Wansung_CI_AS이면 아래의 WHERE절과 같이 COLLATE DATABASE_DEFAULT로 TB_TABLE2의 NAME 컬럼의 Collation(문자정렬)을 변경하여 쿼리를 수행하면 Collation(문자정렬) 충돌이 해결됩니다.

SELECT * 
  FROM TB_TABLE1, TB_TABLE2
 WHERE TB_TABLE1.NAME = TB_TABLE2.NAME COLLATE DATABASE_DEFAULT
 

 

 

 

 

반응형

댓글