본문 바로가기

[오라클 레퍼런스 함수] CHR - 캐릭터셋의 숫자 값을 문자로 변환

by ㅇㅍㅍ 2023. 8. 1.
[오라클 레퍼런스 함수] CHR - 캐릭터셋의 숫자 값을 문자로 변환
728x90

CHR

 

구문

CHR(n [ USING NCHAR_CS ])

 

목적

CHR 함수는 n과 이진 동등한 값을 VARCHAR2 형식으로 반환합니다. 반환되는 값은 데이터베이스 문자 집합이거나 USING NCHAR_CS를 지정한 경우에는 국가 문자 집합으로 됩니다.

단일바이트 문자 집합의 경우, n이 256보다 크면 Oracle Database는 n mod 256의 이진 동등값을 반환합니다. 멀티바이트 문자 집합의 경우, n은 하나의 전체 코드 포인트로 해석되어야 합니다. 잘못된 코드 포인트는 유효성이 검사되지 않으며, 잘못된 코드 포인트를 지정하는 결과는 결정할 수 없습니다.

이 함수는 NUMBER 값 또는 암시적으로 NUMBER로 변환 가능한 값으로 인수를 취하고 문자를 반환합니다.

 

노트: CHR 함수를 사용하는 것(선택적으로 USING NCHAR_CS 절과 함께 사용 여부와 상관없이)은 ASCII와 EBCDIC 기반의 기계 아키텍처 사이에서 이식성이 없는 코드를 생성합니다.

 

참고:

  • NCHR 및 암시적 변환에 대한 자세한 정보는 표 2-8을 참조하세요.
  • Oracle Database Globalization Support Guide의 부록 C에서는 CHR의 문자 반환값에 할당되는 정렬 파생 규칙(collation derivation rules)에 대한 정보를 제공합니다.

 

예제

다음 예시는 WE8ISO8859P1로 정의된 데이터베이스 문자 집합을 가진 ASCII 기반 기계에서 실행됩니다.

SELECT CHR(67)||CHR(65)||CHR(84) "Dog"
  FROM DUAL;

Dog
---
CAT

 

동일한 결과를 WE8EBCDIC1047 문자 집합을 사용하는 EBCDIC 기반 기계에서 얻으려면, 이전 예제를 다음과 같이 수정해야 합니다:

SELECT CHR(195)||CHR(193)||CHR(227) "Dog"
  FROM DUAL; 

Dog 
--- 
CAT

 

다중바이트 문자 집합의 경우, 이러한 연결(concatenation)은 다른 결과를 가져옵니다. 예를 들어, 16진수 값이 a1a2 (a1이 첫 번째 바이트를 나타내고 a2가 두 번째 바이트를 나타냄)인 다중바이트 문자가 있다면, n에는 'a1a2'의 10진수 등가값인 41378을 지정해야 합니다.

SELECT CHR(41378)
  FROM DUAL;

 

다음과 같이 a1의 10진수 등가값과 a2의 10진수 등가값을 연결(concatenate)하여 지정할 수는 없습니다.

SELECT CHR(161)||CHR(162)
  FROM DUAL;

 

그러나 다중바이트 코드 포인트를 연결(concatenate)하는 것은 가능합니다. 다음은 hexadecimal 값이 a1a2a1a3인 다중바이트 문자를 연결하는 예시입니다:

SELECT CHR(41378)||CHR(41379)
  FROM DUAL;

 

다음 예시는 국가 문자 집합이 UTF16으로 가정됩니다:

SELECT CHR (196 USING NCHAR_CS)
  FROM DUAL; 

CH 
-- 
Ä

 


출처: 오라클 레퍼런스

원문 링크: Oracle CHR 함수 문서

 

반응형

댓글