UNISTR(Transact-SQL)
적용 대상:Azure SQL Database
UNISTR
에서는 문자열에 있는 문자의 유니코드 인코딩 값을 지정하여 유니코드 문자열 리터럴을 지원합니다.
UNISTR
유니코드 표준에 정의된 대로 입력 식에 해당하는 유니코드 문자를 반환합니다.
유니코드 문자의 이스케이프 시퀀스는 유효한 UTF-16 코드포인트 값이고 \xxxx
유효한 유니코드 코드포인트 값인 형식 \+xxxxxx
으로 xxxx
xxxxxx
지정할 수 있습니다. 유니코드 코드 차트에서 유니코드 코드포인트 값을 조회할 수 있습니다.
NCHAR
같은 함수에 비해 UNISTR
유니코드 문자를 처리하는 보다 유연하고 포괄적인 방법을 제공합니다. 예를 들어 NCHAR
단일 유니코드 값을 문자로 변환할 수 있지만, UNISTR
여러 유니코드 값과 이스케이프 시퀀스를 처리하므로 다양한 유니코드 문자가 포함된 복잡한 문자열을 더 쉽게 사용할 수 있습니다.
구문
UNISTR ( 'character_expression' [ , 'unicode_escape_character' ] )
발언
UNISTR
주요 이점은 다음과 같습니다.
유니코드 이스케이프 시퀀스지원 :
UNISTR
이스케이프 시퀀스를 사용하여 유니코드 문자를 지정할 수 있습니다.입력 형식이
유연성 : char ,nchar ,varchar 및nvarchar 같은 다양한 문자 형식을 지원합니다. char 및 varchar 데이터 형식의 경우 데이터 정렬은 유효한 UTF-8 데이터 정렬이어야 합니다.사용자 지정 이스케이프 문자: 유니코드 값을 문자열 문자 집합으로 변환하는 데 필요한 사용자 지정 이스케이프 문자를 정의할 수 있습니다.
코드 페이지 지원
UNISTR
함수는 레거시 코드 페이지와 호환되지 않으므로 유니코드가 아닌 문자 집합을 사용하는 데이터 정렬을 지원하지 않습니다. 레거시 코드 페이지와 이러한 데이터 정렬은 다음 쿼리를 사용하여 식별할 수 있습니다.
SELECT DISTINCT p.language,
p.codepage
FROM sys.fn_helpcollations() AS c
CROSS APPLY (VALUES (LEFT(c.name, CHARINDEX('_', c.name) - 1),
COLLATIONPROPERTY(c.name, 'codepage'))) AS p(language, codepage)
WHERE p.codepage NOT IN (
0 /* Unicode Only collation */,
65001 /* UTF-8 code page */
);
자세한 내용은 부록 G DBCS/유니코드 매핑 테이블 및
인수
'character_expression'
char, nchar, varchar 또는 nvarchar와 같은 문자 형식의 식입니다. char 및 varchar 데이터 형식의 경우 데이터 정렬은 유효한 UTF-8 데이터 정렬이어야 합니다. 문자열 리터럴 또는 유니코드 또는 UTF-16 코드 포인트 값 또는 둘 다를 지정할 수 있습니다.
character_expression
varchar(max) 및 nvarchar(max)만큼의 길이를 지원합니다.
은 unicode_escape_character'
사용자 정의 유니코드 이스케이프 시퀀스를 나타내는 단일 문자입니다. 제공되지 않으면 기본값은 .입니다 \
.
반환 형식
길이와 형식이 입력 형식에 따라 달라지는 문자열 값입니다.
예제
A. UNISTR 및 NCHAR 함수 사용
다음 예제에서는 모두 함수를 사용하여 UNISTR
유니코드 값을 문자열 문자 집합으로 변환하여 유니코드 문자 웃는 얼굴을 마우스로 표시합니다. 입력이 char 또는 varchar 데이터 형식인 경우 데이터베이스 데이터 정렬은 UTF-8 데이터 정렬이어야 합니다.
UNISTR
및 NCHAR
사용:
SELECT N'Hello! ' + NCHAR(0xd83d) + NCHAR(0xde00);
이 샘플 예제를 작성할 수도 있습니다.
SELECT UNISTR(N'Hello! \D83D\DE00');
SELECT UNISTR(N'Hello! \+01F603');
결과 집합은 다음과 같습니다.
-----------
Hello! 😃
B. 사용자 정의 이스케이프 문자와 함께 UNISTR 함수 사용
다음 예제에서는 사용자 지정 이스케이프 문자와 함께 함수를 사용하여 UNISTR
유니코드를 문자열 문자 집합으로 변환하는 데 필요합니다.
SELECT UNISTR(N'ABC#00C0#0181#0187', '#');
결과 집합은 다음과 같습니다.
-----------
ABCÀƁƇ
C. 문자열 리터럴과 유니코드 코드 요소를 결합하여 UNISTR 함수 사용
다음 예제에서는 UNISTR
UTF-8 데이터 정렬을 사용하여 사용자 정의 이스케이프 문자($
) 및 varchar 데이터 형식과 함께 사용됩니다. 문자열 리터럴을 유니코드 코드포인트 값과 결합합니다.
SELECT UNISTR('I $2665 Azure SQL.' COLLATE Latin1_General_100_CI_AS_KS_SC_UTF8, '$');
결과 집합은 다음과 같습니다.
------------------
I ♥ Azure SQL.
D. UTF-8 제한을 초과하는 문자에 UNISTR 함수 사용
UTF-8 이외의 문자 집합을 사용해야 하는 경우 COLLATE
절을 사용하여 문자 시퀀스를 UTF-8로 변환해야 합니다. 예제는 다음과 같습니다.
SELECT UNISTR('\306F\3044' COLLATE Latin1_General_100_BIN2_UTF8) AS Yes_in_Japanese_Hiragana;
결과 집합은 다음과 같습니다.
Yes_in_Japanese_Hiragana
------------------------
はい