MSSQL에서는 인코딩, charset을 Collation이라 부르고, 컬럼명을 가지며, 조회한다
MSSQL에서는 Korean_Wansung_CI_AI 와 같은 다른이름의 인코딩이 쓰여있는데,
Korean : 한국어
Wansung : 정렬 규칙(완성형)
CI : Case-Insensitive : 대소문자 구분
AI : Accent-Insensitive : 악센트 구분
구분 | 구분안함 | |
대소문자 | CS | CI |
악센트 | AS | AI |
기본적으로 같은 Collate 형식을 가진 칼럼끼리 비교 연산 시 문제 되지 않지만
서로 다른 Collate 형식을 가진 칼럼끼리 비교를 하면 데이터 충돌 에러가 발생한다.
1. DBMS 언어셋
-- DB 언어
Select @@LANGUAGE
초기설치 언어셋은 변경하기 어렵다.
2. DB Collation
DB Collation 조회
-- DB collation(인코딩) 조회
Select name, database_id, collation_name From sys.databases;
DB마다 Collation을 가지고있으며, 해당 DB Collation을 따라 Table Collation이 정해진다.
DB Collation 변경은 아래와 같이 한다.
-- DB collation(인코딩) 변경
ALTER DATABASE 데이터베이스명 COLLATE Korean_Wansung_CI_AI GO
3. Table Collation
MSSQL에서 Table 자체에 Collation은 없지만, Table 스키마에 기술된 컬럼들마다 Colltion을 갖습니다.
해당 DB에 모든 Table Column Collation 조회
--해당 DB에 테이블 전체 collation(인코딩) 조회
SELECT t.name TableName, c.name ColumnName, collation_name
FROM sys.columns c
inner join sys.tables t on c.object_id = t.object_id;
특정 Table Column Colltion 조회
-- 테이블별 컬럼 collation(인코딩) 조회
SELECT COLUMN_NAME, CHARACTER_SET_NAME, COLLATION_NAME, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH
FROM INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = '테이블명'
특정 Table Column Colltion 변경
-- 테이블별 컬럼 collation(인코딩) 변경
ALTER TABLE 테이블명
ALTER COLUMN 컬럼명 VARCHAR(50) COLLATE Korean_Wansung_CI_AI
GO
'Work > DataBase' 카테고리의 다른 글
[Oracle] Synonym 시노님이란? (0) | 2022.05.04 |
---|---|
[Oracle] ORA-01653 : TableSpace에서 확장 할 수 없습니다. (0) | 2021.04.16 |
[Oracle] 오라클 - 원하는 테이블만 휴지통에서 복구하기 (0) | 2021.02.02 |
[MariaDB] 포트변경 (0) | 2021.01.28 |
[MariaDB] 데이터 경로 Datadir 변경 하기 (0) | 2021.01.27 |