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" 간의 데이터 정렬 충돌을 해결할 수 없습니다.
에러 발생 시
조치하는 방법이였습니다.
'컴퓨터관련 > MS-SQL' 카테고리의 다른 글
[MS-SQL]MERGE로 다중조건 UPDATE,INSERT,DELETE 하기 (0) | 2020.02.07 |
---|---|
[MS-SQL]MERGE(머지)문으로 INSERT/UPDATE 한번에 하기 (0) | 2020.01.29 |
[MS-SQL]날짜(DATE)형 형변환 (0) | 2019.11.29 |
[MS-SQL]쿼리(스크립트)를 이용하여 함수리스트 가져오기 (0) | 2019.10.17 |
[MS-SQL]로그인계정과 내부사용자계정의 차이 및 데이터 맞추기 (1) | 2019.10.02 |