본문 바로가기
컴퓨터관련/MS-SQL

[MS-SQL]Korean_Wansung_CS_AS 과(와) Korean_Wansung_CI_AS 에러 발생시

by 빛과 어둠사이 2019. 12. 23.
728x90
반응형
SMALL

MS-SQL을 쓸 때

여러가지 에러가 많이 발생합니다.


그 중 문자를 비교하는 과정에서의

에러가 발생하는 것 중 하나에 대해서

정리를 해보고자 합니다.


간혹

메시지 468, 수준 16, 상태 9, 줄 1

equal to 작업에서의 "Korean_Wansung_CS_AS"과(와) "Korean_Wansung_CI_AS" 간의 데이터 정렬 충돌을 해결할 수 없습니다.

위와 같은 에러가 발생하는 경우가 있습니다.



위와 같은 에러가 발생하는 경우가 있습니다.

이것은 문자열 비교 시

서로 다른 형식을 비교할 때 발생되는

ERROR 입니다.


Korean_Wansung_CS_AS 형식은

대소문자를 구별합니다.

Korean_Wansung_CI_AS 형식은

대소문자를 구별하지 않습니다.


이런 차이점으로 인해

에러가 발생이 되는 것입니다.


이를 해결해 주기 위해서는

형식을 변경해주면 됩니다.

쿼리에서 형식을 비교해주면

해당 쿼리에서만 변경된 형식으로 적용되어

ERROR 없이 

조회를 할 수 있습니다.



실제 예제를 봐보도록 하겠습니다.

select top 10 * from TEST_TABLE
where hp in (
select top 1 hp 
from TEST2 
where hp = '010-1234-1234'
)

위처럼 쿼리를 짰습니다.



전화번호를 가지고와서 비교하고,

그래서 그 값을 기준으로

데이터를 찾는 것입니다.


위처럼 쿼리를 짜고

실행을 하면

결과는 위와 같이 에러가 발생을 합니다.





이를 해결하기 위해서

형식을 변경하는 명령어를

작성해주시면 됩니다.


명령어는 다음과 같습니다.

collate Korean_Wansung_CI_AS

위 명령어를 쓰면

형식이 CI 형식으로

변경이 되어서 나오게 되는 것입니다.


이제 실제 쿼리를 보겠습니다.

select top 10 * from TEST_TABLE
where hp in (
select top 1 hp collate Korean_Wansung_CI_AS 
from TEST2 
where hp = '010-1234-1234'
)

위처럼 쿼리를 짰습니다.




위처럼 collate Korean_Wansung_CI_AS 명령어를 넣어서

실행을 하면

문제 없이 실행이 되는 것을

확인할 수 있습니다.




간단한 문제이지만

놓치기도 쉽고,

막상 에러가 발생되었을 때

잘 모르는 부분일 수 있어서

정리를 해 보았습니다.






이상으로 SQL SERVER에서

메시지 468, 수준 16, 상태 9, 줄 1

equal to 작업에서의 "Korean_Wansung_CS_AS"과(와) "Korean_Wansung_CI_AS" 간의 데이터 정렬 충돌을 해결할 수 없습니다.

에러 발생 시

조치하는 방법이였습니다.

728x90
반응형
LIST