DB
[MSSQL] 데이터 정렬값, COLLATION - Korean_Wansung_xxx
쑤기c
2019. 1. 22. 10:22
SELECT실행시 아래 에러 발생.
equal to 작업에서의 "Korean_Wansung_CI_AS"과(와) "Korean_Wansung_CS_AS" 간의 데이터 정렬 충돌을 해결할 수 없습니다.
원인:) 비교하는 두 컬럼의 데이터 정렬값이 달라서 발생.
해결1:) 비교컬럼에 강제캐스팅해서 비교 COLLATE
SELECT A.UsrID, A.UsrName, B.UsrGroupCd
FROM dbo.USR_USER A, dbo.USR_GROUP B
WHERE A.UsrIDCOLLATE Korean_Wansung_CI_AS
= B.userid COLLATE Korean_Wansung_CI_AS
해결2:) 데이터 정렬값을 일치 시킨다. ALTER
-- DB별 디폴트Collation조회
SELECT NAME, COLLATION_NAME, *
FROM sys.databases
-- 컬럼의 Collation 설정값 조회
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'TABLE_NAME'
-- 컬럼의 Collation설정값 변경
ALTER TABLE FORMS_USERGROUP_RANGE_TBL
ALTER COLUMN userid varchar(30)
COLLATE Korean_Wansung_CS_AS NOT NULL
Korean_Wansung_CS_AS vs Korean_Wansung_CI_AS
Korean_Wansung_CS_AS(대소문자 구분O): 양쪽 비교항에 UPPER() 사용하면 구분안함.
Korean_Wansung_CI_AS(대소문자 구분X)
반응형