전역화된 응용 프로그램의 유니코드 사용
유니코드 데이터를 삽입하고 검색할 수 있습니다. 데이터가 데이터베이스 및 클라이언트 프로그램 간에 투명하게 변환되므로 클라이언트 프로그램이 데이터베이스 문자 집합 및 국가별 문자 집합에 독립적이게 됩니다.
참조:
-
유니코드를 이용한 SQL 및 PL/SQL 프로그래밍에 대한 자세한 내용은 Oracle Database Globalization Support Guide를 참조하십시오
-
유니코드를 사용한 프로그래밍에 대한 일반적인 내용은 Oracle Database Globalization Support Guide를 참조하십시오
SQL 및 PL/SQL의 유니코드 문자열 리터럴 표현
SQL 또는 PL/SQL에서 유니코드 문자열 리터럴을 나타내는 방법은 다음 예제와 같이 세 가지입니다.
-
네스트링
예:
N'résumé'.제한 사항: "문자 집합 변환 중 데이터 손실 방지"를 참조하십시오.
-
NCHR(number)
SQL 함수 NCHR은 상응하는 이진 값이 국가별 문자 집합의 number인 문자를 반환합니다. 반환되는 문자의 데이터 유형은 NVARCHAR2입니다.
예:
NCHR(36)은 기본 국가별 문자 집합 AL16UTF16에서 $를 나타냅니다.제한 사항: NCHR(number) 값의 이식성은 동일한 국가별 문자 집합을 사용하는 응용 프로그램에만 사용할 있습니다.
-
UNISTR('string')
SQL 함수 UNISTR은 문자열을 국가별 문자 집합으로 변환합니다.
이식성 및 데이터 보존을 위해 Oracle은 문자열에 ASCII 문자와 유니코드 인코딩 값만 포함하는 것이 좋습니다. 유니코드 인코딩 값의 형태는 \xxxx입니다. 여기서 xxxx는 UCS-2 인코딩 형식의 문자 코드 값에 대한 16진수입니다.
예:
UNISTR('G\0061ry')는 'Gary'를 나타냅니다.ASCII 문자는 데이터베이스 문자 집합으로 변환된 다음 국가별 문자 집합으로 변환되고 유니코드 인코딩 값은 국가별 문자 집합으로 직접 변환됩니다.
참조:
-
유니코드 문자열 리터럴에 대한 자세한 내용은Oracle Database Globalization Support Guide를 참조하십시오.
-
Oracle Database SQL Language Reference - NCHR 함수에 대한 자세한 내용
-
Oracle Database SQL Language Reference - UNISTR 함수에 대한 자세한 내용
문자 집합 변환 중 데이터 손실 방지
SQL 또는 PL/SQL 명령문의 일부인 리터럴은 명령문의 나머지 부분과 동일한 문자 집합으로 인코딩됩니다(접두어 N을 포함하거나 포함하지 않음). 클라이언트측에서는 명령문이 NLS_LANG 파라미터에 따라 결정되는 클라이언트 문자 집합으로 인코딩되고, 서버측에서는 명령문이 데이터베이스 문자 집합으로 인코딩됩니다.
SQL 또는 PL/SQL 문이 클라이언트에서 데이터베이스로 전송될 때 해당 문자 집합이 적절하게 변환됩니다. 클라이언트가 텍스트 리터럴에서 사용한 문자 중 일부가 데이터베이스 문자 집합에 포함되어 있지 않으면 이러한 변환 시 데이터가 손실됩니다. 데이터베이스 문자 집합에 독립적이도록 설계된 NCHAR 문자열 리터럴이 CHAR 텍스트 리터럴보다 취약합니다.
호환되지 않는 데이터베이스 문자 집합으로 변환 시 데이터 손실을 방지하려면 NCHAR 리터럴 바꾸기 기능을 활성화할 수 있습니다. 자세한 내용은 Oracle Database Globalization Support Guide를(를) 참조하십시오.