유니코드를 사용한 서버측 프로그래밍

업데이트: 2006년 7월 17일

데이터베이스에서 유니코드를 인식하도록 하려면 nchar, nvarchar, nvarchar(max) 데이터 형식을 사용하여 유니코드 저장소를 정의하는 작업 외에도 유니코드 인식 클라이언트 상호 작용을 정의하는 작업을 수행해야 합니다. 데이터베이스 서버측에서 다음을 수행하여 유니코드 인식 클라이언트 상호 작용을 정의할 수 있습니다.

  • 테이블 열 및 CONVERT()와 CAST() 연산에서 비유니코드 데이터 형식을 유니코드 데이터 형식으로 전환합니다.
  • ASCII() 및 CHAR() 함수를 동등한 유니코드 함수인 UNICODE() 및 NCHAR()로 대체합니다.
  • 저장 프로시저 및 트리거의 변수와 매개 변수를 유니코드로 정의합니다.
  • 문자 N을 유니코드 문자열 상수의 접두사로 사용합니다.

UNICODE(), NCHAR() 및 기타 함수 사용

ASCII() 함수는 전달된 문자의 비유니코드 문자 코드를 반환합니다. 따라서 비유니코드 문자열에 ASCII 함수를 사용하는 반면 유니코드 문자열에는 대응하는 UNICODE() 함수를 사용합니다. CHAR 함수에서도 마찬가지입니다. NCHAR은 CHAR 함수의 유니코드 함수입니다.

SOUNDEX() 함수는 영어 음성 규칙을 기준으로 정의되므로 문자열에 A-Z 및 a-z의 라틴어 문자만 있는 것이 아니면 유니코드 문자열은 의미가 없습니다.

ASCII, CHAR 및 SOUNDEX는 전달된 유니코드 매개 변수일 수도 있지만 이러한 인수는 비유니코드 문자열로 암시적으로 변환됩니다. 이러한 함수는 정의에 의해 비유니코드 문자열에서 실행되므로 이로 인해 처리 작업 전에 유니코드 문자가 손실될 수 있습니다.

UNICODE() 및 NCHAR() 함수 외에도 CHARINDEX(), LEFT(), LEN(), UPPER(), LOWER(), LTRIM(), RTRIM(), PATINDEX(), REPLACE(), QUOTENAME(), REPLICATE(), REVERSE(), STUFF(), SUBSTRING(), UNICODE() 등의 문자열 조작 함수는 어디서나 유니코드를 지원합니다. 이러한 함수는 유니코드 인수를 사용하고 유니코드 문자열의 2바이트 문자 경계를 준수하며 입력 매개 변수가 유니코드인 경우 유니코드 정렬 규칙을 사용하여 문자열을 비교합니다.

저장 프로시저에서 매개 변수 정의

유니코드 데이터 형식으로 매개 변수를 정의하면 클라이언트 요청 또는 입력은 서버에서 유니코드로 암시적으로 변환되고 진행 중에 손상되지 않습니다. 매개 변수가 OUTPUT 매개 변수로 지정되는 경우 유니코드 유형은 클라이언트로 다시 보내지는 과정에서 손상될 가능성도 최소화합니다.

다음 저장 프로시저에서 변수는 유니코드 데이터 형식으로 선언됩니다.

CREATE PROCEDURE Product_Info
    @name nvarchar(40)
AS
SELECT p.ListPrice, v.Name
    FROM Production.Product p 
        INNER JOIN Purchasing.ProductVendor pv
            ON p.ProductID = pv.ProductID  
        INNER JOIN Purchasing.Vendor v
            ON pv.VendorID = v.VendorID
WHERE p.Name = @name;

N 접두사 사용

저장 프로시저 및 트리거와 같이 서버에서 실행된 코드에 나타나는 유니코드 문자열 상수 앞에는 대문자 N이 와야 합니다. 참조되는 열이 이미 유니코드로 정의된 경우에도 마찬가지입니다. N 접두사가 지정되지 않은 문자열은 데이터베이스의 기본 코드 페이지로 변환되며 특정 문자를 인식하지 못할 수도 있습니다.

예를 들어 이전 예에서 만든 저장 프로시저는 다음과 같은 방법으로 서버에서 실행될 수 있습니다.

EXECUTE Product_Info @name = N'Chain'

N 접두사 사용에 대한 요구 사항은 서버에서 보낸 문자열 상수와 클라이언트에서 보낸 문자열 상수 모두에 적용됩니다.

참고 항목

개념

유니코드로 클라이언트측 프로그래밍

도움말 및 정보

SQL Server 2005 지원 받기

변경 내역

릴리스 내역

2006년 7월 17일

변경된 내용
  • ntext 데이터 형식에 대한 참조를 nvarchar(max) 데이터 형식으로 대체했습니다.