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