Top
equal to 작업에서의 "Korean_Wansung_CS_AS"과(와) "Korean_Wansung_CI_AS" 간의 데이터 정렬 충돌을 해결할 수 없습니다. 문제 해결 법 조인 했을 때 문제가 발생하였다. 찾아보니 mssql에 컬럼별로 속성에 데이터 정렬이 있는데 속성값이 달라서 발생한 문제였다. 여러 옵션이 있는데 그 중 2가지만 보겠다. Korean_Wansung_CI_AS 같은 경우 테이블 생성시 default 로 잡히는 기본 값이다. 특징은 영문 대소문자를 구분하지 않는다 예로 컬럼에 Hello 란 값이 저장된 레코드와 hello 라고 저장된 레코드가 있다고 가정하자 ex : select culom from table = 'hello' select culom from table = 'Hello' 두개의 쿼리는 같은 값이 나온다 ex : Korean_Wansung_CS_AS 경우는 위와 같은 쿼리 조회시 영문 대소문자를 구분하여 한 가지씩만 나온다.이런 이유로 테이블 조인할 때 충돌이 난다고 오류는 뱉는다 . 해결 방법은 2가지 있다.
방법 1. 조인하는 조건의 컬럼을 같은 값으로 바꾸는 법 alter table 테이블명 alter column 컬럼명 자료형(ex:varchar) COLLATE Korean_Wansung_CS_AS
방법 2.쿼리 실행시 강제로 형변환 시켜주는 법 select * from table A left outer join table2 B ON A.컬럼명 collate Korean_Wansung_CI_AS = B.컬럼명 collate Korean_Wansung_CI_AS
그럼 문제 해결!!