collation 임시변경

Posted at 2008. 5. 15. 13:37 | Posted in 카테고리 없음


두컬럼의 collation이 다르기때문에 발생하는 에러입니다.

sp_help '테이블명'
이나
select column_name, data_type, collation_name
from information_schema.columns
where table_name in ('t1','t2')
등과 같은 명령어 또는 EM등을 통하여 union시에 적용한
컬럼들의 collation을 확인해보시기 바랍니다.


--drop table t1
create table t1(id int, c1 varchar(10) collate Korean_Wansung_CI_AS)
insert into t1 values(1, 'a')
--drop table t2
create table t2(id int, c1 nvarchar(20) collate Korean_Wansung_CS_AS)
insert into t2 values(1, 'A')
go

select id, c1 from t1
union
select id, c1 from t2

서버: 메시지 446, 수준 16, 상태 9, 줄 1
UNION 연산의 데이터 정렬 충돌을 해결할 수 없습니다.
Cannot resolve collation conflict for UNION operation.(영문일경우 에러메시지)

와 같은 에러가 발생을 합니다.

이럴경우 두컬럼의 collcation을 동일하게 맞추어주셔야 합니다.

select id, convert(nvarchar(20),c1 collate Korean_Wansung_CI_AS) as c1 from t1
union
select id, convert(nvarchar(20),c1 collate Korean_Wansung_CI_AS) as c1 from t2

위의예는 t1,t2테이블 모두 convert를 통하여 collation을 변경해주었지만
어느한쪽만 변경해주셔도 무방합니다.

select id, convert(nvarchar(20),c1 collate Korean_Wansung_CI_AS) as c1 from t1
union
select id, c1 as c1 from t2



//