본문 바로가기

[오라클 레퍼런스 함수] CONVERT - 문자열을 다른 문자 집합으로 변환

by ㅇㅍㅍ 2023. 8. 2.
[오라클 레퍼런스 함수] CONVERT - 문자열을 다른 문자 집합으로 변환
728x90

CONVERT

 

구문

CONVERT(char, dest_char_set[, source_char_set ])

 

목적

CONVERT 함수는 문자열을 하나의 문자 집합에서 다른 문자 집합으로 변환합니다.

 

  • 인수 char은 변환할 값으로, CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB, NCLOB 데이터 유형 중 하나가 될 수 있습니다.
  • 인수 dest_char_setchar이 변환되는 대상 문자 집합의 이름입니다.
  • 인수 source_char_setchar이 데이터베이스에서 저장된 문자 집합의 이름입니다. 기본값은 데이터베이스 문자 집합입니다.

 

CHARVARCHAR2의 반환 값은 VARCHAR2입니다. NCHARNVARCHAR2의 경우 NVARCHAR2가 반환됩니다. CLOB의 경우 CLOB가 반환되며, NCLOB의 경우 NCLOB가 반환됩니다.

대상 문자 집합 및 원본 문자 집합 인수는 모두 리터럴 또는 문자 집합 이름이 포함된 열이 될 수 있습니다.

문자 변환에서 완벽한 일치를 위해서는 대상 문자 집합에 원본 문자 집합에 정의된 모든 문자의 표현이 포함되어야 합니다. 대상 문자 집합에 문자가 없는 경우 대체 문자가 나타납니다. 대체 문자는 문자 집합 정의의 일부로 정의할 수 있습니다.

 

노트: 현재 Oracle Database 릴리스에서는 CONVERT 함수의 사용을 권장하지 않습니다. CONVERT 함수의 반환 값은 문자 데이터 유형이므로, 데이터 유형에 따라 데이터베이스 문자 집합이나 국가 문자 집합 중 하나여야 합니다. 이러한 두 문자 집합 중 하나가 아닌 dest_char_set은 지원되지 않습니다. char 인수와 source_char_set도 동일한 요구 사항을 가집니다. 따라서 이 함수의 실제적인 사용은 잘못된 문자 집합으로 저장된 데이터를 수정하는 데 사용하는 것입니다.

데이터베이스나 국가 문자 집합에 없는 값은 RAW 또는 BLOB으로 처리하고 저장하는 것이 바람직합니다. UTL_RAWUTL_I18N PL/SQL 패키지의 프로시저들 (예: UTL_RAW.CONVERT)를 사용하여 이러한 값을 제한적으로 처리할 수 있습니다. UTL_FILE, UTL_TCP, UTL_HTTPUTL_SMTP 패키지의 프로시저들은 RAW 인수를 받아 처리된 데이터를 출력하는 데 사용할 수 있습니다.

 

참고:

Oracle Database Globalization Support Guide의 부록 C는 CONVERT 함수의 문자 반환 값에 할당된 정렬을 정의하는 정렬 파생 규칙(collation derivation rules)에 대한 정보를 제공합니다.

 

예시

다음 예제는 라틴-1 문자열을 ASCII로 변환하여 문자 집합 변환을 보여줍니다. 결과는 WE8ISO8859P1 데이터베이스에서 US7ASCII 데이터베이스로 동일한 문자열을 가져오는 것과 동일합니다.

SELECT CONVERT('Ä Ê Í Õ Ø A B C D E ', 'US7ASCII', 'WE8ISO8859P1') 
   FROM DUAL; 

CONVERT('ÄÊÍÕØABCDE' 
--------------------- 
A E I ? ? A B C D E ?

 

다음과 같이 V$NLS_VALID_VALUES 뷰를 쿼리하여 유효한 문자 집합의 목록을 얻을 수 있습니다.

SELECT * FROM V$NLS_VALID_VALUES WHERE parameter = 'CHARACTERSET';

 


출처: 오라클 레퍼런스

원문 링크: Oracle CONVERT 함수 문서

 

반응형

댓글