[MSSQL] 다국어 - INSERT 시 N'컬럼값' 사용 본문

IT Cafe+/MS-SQL

[MSSQL] 다국어 - INSERT 시 N'컬럼값' 사용

고드림 2018. 12. 12. 17:02

/**************************************
 MSSQL 다국어 지원을 위한 환경설정 
 #COLLATE #LANGUAGE #CHARTERSET 
 
 - 작업내용
  . @@language 가 '한국어' 인지 확인
  . collation_name 이 'Korean_Wansung_CI_AS' 인지 확인
 **************************************/
USE master
GO



/*****************
 언어확인
 *****************/
select @@language
;
-------------
한국어


/*****************
 collation_name 확인
 *****************/
SELECT collation_name 
  FROM sys.databases 
 WHERE name = 'database_name' 

--------------
sql_latin1_general_cp1_ci_as


/*****************
 collation_name 변경 작업
 *****************/

/**
 * 싱글유저 모드로 변경. 싱글유저로 접속하지 않으면 다른 사람의 작업으로 인해 배타적잠금 오류가 발생.
 */
ALTER DATABASE database_name SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO

/**
 * collation_name 을 Korean_Wansung_CI_AS 으로 변경
 */
ALTER DATABASE database_name COLLATE Korean_Wansung_CI_AS
GO


/**
 * 멀티유저 모드로 변경. 
 */
ALTER DATABASE database_name SET MULTI_USER
GO

 

MS-SQL에서 

다국어 사용을 위해서는 입력(INSERT) 쿼리문에 아래와 같이 

작성해주시면 됩니다.

 

insert into dbo.ZTEST_NVARCHAR values('Hello', N'Tạm biệt');  /*영어, 베트남어*/

 

※ 다국어가 필요없는 코드성은 N'value' 를 할 필요 없습니다.

※ 개발DB에 다국어 테스트 테이블- [dbo].[ZTEST_NVARCHAR] 을 만들었습니다. 필요시 사용하세요.

 

 

테스트 테이블 생성

 

drop TABLE [dbo].[ZTEST_NVARCHAR];

 

 

CREATE TABLE [dbo].[ZTEST_NVARCHAR](

[var] [varchar](10) NOT NULL,

[nvar] [Nvarchar](10) NOT NULL

 

) ON [PRIMARY]

GO

 

 

 

테스트 테이터 입력

insert into dbo.ZTEST_NVARCHAR values('고','高');  /*한글, 한자*/

insert into dbo.ZTEST_NVARCHAR values('Hello','Tạm biệt');  /*영어, 베트남어*/

insert into dbo.ZTEST_NVARCHAR values('Hello', N'Tạm biệt');  /*영어, 베트남어*/

 

 

테스트 테이터 확인

select var, nvar, datalength(var), datalength(nvar) from dbo.ZTEST_NVARCHAR ;

 

var nvar 데이터 길이(byte) 데이터 길이(byte) 쿼리문
6 6 insert into dbo.ZTEST_NVARCHAR values('고','高');  /*한글, 한자*/
Hello T?m bi?t 5 16 insert into dbo.ZTEST_NVARCHAR values('Hello','Tạm biệt');  /*영어, 베트남어*/
Hello Tạm biệt 5 16 insert into dbo.ZTEST_NVARCHAR values('Hello', N'Tạm biệt');  /*영어, 베트남어*/

 

Comments