Partilhar via


UNISTR (Transact-SQL)

Aplica-se a: SQL Server 2025 (17.x) Azure SQL Database AzureSQL Managed InstanceSQL database in Microsoft Fabric

UNISTR fornece suporte para literais de cadeia de caracteres Unicode, permitindo que você especifique o valor de codificação Unicode de caracteres na cadeia de caracteres. UNISTR retorna os caracteres Unicode correspondentes à expressão de entrada, conforme definido pelo padrão Unicode.

A sequência de escape para um caractere Unicode pode ser especificada na forma de \xxxx ou \+xxxxxx, onde xxxx é um valor de ponto de código UTF-16 válido e xxxxxx é um valor de ponto de código Unicode válido. Você pode procurar valores de ponto de código Unicode no Unicode Code Charts.

Em comparação com funções como NCHAR, UNISTR fornece uma maneira mais flexível e abrangente de lidar com caracteres Unicode. Por exemplo, enquanto NCHAR pode converter um único valor Unicode em um caractere, UNISTR lida com vários valores Unicode e sequências de escape, facilitando o trabalho com cadeias de caracteres complexas que incluem vários caracteres Unicode.

Note

UNISTRestá disponível na Instância Gerenciada SQL do Azure com a política de atualizaçãoSQL Server 2025 ou Always-up-to-date.

Transact-SQL convenções de sintaxe

Syntax

UNISTR ( 'character_expression' [ , 'unicode_escape_character' ] )

Remarks

Os principais benefícios do UNISTR incluem:

  • Suporte para sequências de escape Unicode: UNISTR permite especificar caracteres Unicode usando sequências de escape

  • Flexibilidade com tipos de entrada: UNISTR suporta vários tipos de caracteres, como char, nchar, varchare nvarchar. Para tipos de dados char e varchar, o agrupamento deve ser um agrupamento UTF-8 válido.

  • Caracteres de escape personalizados: Você pode definir um caractere de escape personalizado para executar a conversão necessária de valores Unicode em um conjunto de caracteres de cadeia de caracteres.

O || operador de pipes está disponível na Instância Gerenciada SQL do Azure configurada com a política de atualizaçãoSQL Server 2025 ou Always-up-to-date.

Suporte a páginas de código

A função UNISTR não é compatível com páginas de código herdadas, o que significa que não suporta agrupamentos que usam conjuntos de caracteres não-Unicode. Esses agrupamentos com páginas de código herdadas podem ser identificados usando a consulta a seguir.

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 */
);

Para obter mais informações, consulte Appendix G DBCS/Unicode Mapping Tables e Appendix H Code Pages.

Arguments

'character_expression'

Uma expressão de qualquer tipo de caractere, como char, nchar, varcharou nvarchar. Para tipos de dados char e varchar, o agrupamento deve ser um agrupamento UTF-8 válido. Você pode especificar literais de cadeia de caracteres ou valores de ponto de código Unicode ou UTF-16 ou ambos. character_expression suporta um comprimento tão grande quanto varchar(max) e nvarchar(max).

N'unicode_escape_character'

Um único caractere que representa uma sequência de escape Unicode definida pelo usuário. Se não for fornecido, o valor padrão será \.

Tipos de devolução

Um valor de cadeia de caracteres cujo comprimento e tipo dependem dos tipos de entrada.

Examples

A. Use UNISTR vs a função NCHAR

Todos os exemplos a seguir usam as UNISTR funções para executar a conversão necessária dos valores Unicode em conjunto de caracteres de cadeia de caracteres, para exibir o caractere Unicode Smiling Face With Open Mouth. O agrupamento de banco de dados deve ser um agrupamento UTF-8 se a entrada for de char ou varchar tipos de dados.

Usando UNISTR e NCHAR:

SELECT N'Hello! ' + NCHAR(0xd83d) + NCHAR(0xde00);

Este exemplo de exemplo também pode ser escrito:

SELECT UNISTR(N'Hello! \D83D\DE00');
SELECT UNISTR(N'Hello! \+01F603');

Aqui está o conjunto de resultados.

-----------
Hello! 😃

B. Use a função UNISTR com caractere de escape definido pelo usuário

O exemplo a seguir usa a função UNISTR com um caractere de escape personalizado para executar a conversão necessária do Unicode em um conjunto de caracteres de cadeia de caracteres.

SELECT UNISTR(N'ABC#00C0#0181#0187', '#');

Aqui está o conjunto de resultados.

-----------
ABCÀƁƇ

C. Use a função UNISTR combinando literais de cadeia de caracteres e pontos de código Unicode

No exemplo a seguir, UNISTR é usado com um caractere de escape definido pelo usuário ($) e um varchar tipo de dados com agrupamento UTF-8. Ele combina literais de cadeia de caracteres com um valor de ponto de código Unicode:

SELECT UNISTR('I $2665 Azure SQL.' COLLATE Latin1_General_100_CI_AS_KS_SC_UTF8, '$');

Aqui está o conjunto de resultados.

------------------
I ♥ Azure SQL.

D. Use a função UNISTR para caracteres além do limite UTF-8

Se você precisar usar um conjunto de caracteres além de UTF-8, deverá converter a sequência de caracteres para UTF-8 usando a cláusula COLLATE. Aqui está um exemplo:

SELECT UNISTR('\306F\3044' COLLATE Latin1_General_100_BIN2_UTF8) AS Yes_in_Japanese_Hiragana;

Aqui está o conjunto de resultados.

Yes_in_Japanese_Hiragana
------------------------
はい