UNISTR

Syntax

UNISTR
(
  str  IN text
)
RETURNS text;

개요

입력된 텍스트 내의 Unicode escape 시퀀스를 실제 Unicode 문자로 변환하여 반환한다.

지원하는 escape 형식은 다음과 같다:

  • \XXXX : 4자리 16진수 형식이다

  • \uXXXX : 4자리 16진수 형식이다 (앞에 'u' 접두사가 붙음)

  • \+XXXXXX : '+' 기호 뒤에 6자리 16진수 형식이다

  • \UXXXXXXXX : 'U' 기호 뒤에 8자리 16진수 형식이다

함수는 surrogate pair 처리를 통해 올바른 Unicode 코드 포인트로 변환하며, 잘못된 surrogate pair가 감지되면 오류를 발생시킨다.

'U+0000' 는 유효하지 않은 유니코드 이다. 따라서 다음과 같은 예시는 오류를 발생시킨다. \0000 , \u0000 , \+000000 , \U00000000

파라미터

파라미터
설명

str

text 타입이다; 변환할 대상 텍스트이다. 이 문자열 내의 Unicode escape 시퀀스들이 실제 Unicode 문자로 치환된다.

예제

-- 4자리 16진수 Unicode escape를 사용한 예제 (예: \0041는 'A'로 변환)
SELECT oracle.UNISTR('\0041\0042\0043');
-- 결과: 'ABC'

 unistr 
--------
 ABC
(1 row)

-- 다양한 형식의 escape 시퀀스를 포함한 예제
SELECT oracle.UNISTR('\u0041 \+00420042 \U00000041');

  unistr  
----------
 A 䈀42 A
(1 row)


select oracle.unistr('\0441\043B\043E\043D');

 unistr 
--------
 слон
(1 row)

select oracle.unistr('d\u0061t\U00000061');

 unistr 
--------
 data
(1 row)

-- 잘못된 형식 예제
SELECT oracle.unistr('wrong: \db99');
ERROR:  invalid Unicode surrogate pair

SELECT oracle.unistr('wrong: \db99\0061');
ERROR:  invalid Unicode surrogate pair

SELECT oracle.unistr('wrong: \+00db99\+000061');
ERROR:  invalid Unicode surrogate pair

SELECT oracle.unistr('wrong: \+2FFFFF');
ERROR:  invalid Unicode escape value

SELECT oracle.unistr('wrong: \udb99\u0061');
ERROR:  invalid Unicode surrogate pair

SELECT oracle.unistr('wrong: \U0000db99\U00000061');
ERROR:  invalid Unicode surrogate pair

SELECT oracle.unistr('wrong: \U002FFFFF');
ERROR:  invalid Unicode escape value

SELECT oracle.unistr('wrong: \0000');
ERROR:  invalid Unicode code point

SELECT oracle.unistr('wrong: \u0000');
ERROR:  invalid Unicode code point

SELECT oracle.unistr('wrong: \+000000');
ERROR:  invalid Unicode code point

SELECT oracle.unistr('wrong: \U00000000');
ERROR:  invalid Unicode code point

Last updated