Compartilhar via


UNISTR (Transact-SQL)

Aplica-se a:Banco de Dados SQL do Azure

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 ou \xxxx, onde \+xxxxxx é um valor de xxxx ponto de código UTF-16 válido e xxxxxx é um valor de ponto de código Unicode válido. Você pode pesquisar valores de ponto de código Unicode nos Gráficos de Código Unicode.

Em comparação com funções como NCHAR, UNISTR fornece uma maneira mais flexível e abrangente de lidar com caracteres Unicode. Por exemplo, embora NCHAR possa 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.

Convenções de sintaxe de Transact-SQL

Sintaxe

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

Observações

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 dá suporte a vários tipos de caracteres, como char, nchar, varchare nvarchar. Para os tipos de dados char e varchar , a ordenação deve ser uma ordenação UTF-8 válida.

  • 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.

Suporte à página de código

A função UNISTR não é compatível com páginas de código herdadas, o que significa que ela não dá suporte a ordenações que usam conjuntos de caracteres não Unicode. Essas ordenações com páginas de código herdadas podem ser identificadas 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 Apêndice G DBCS/Tabelas de Mapeamento Unicode e Páginas de Código do Apêndice H.

Argumentos

'character_expression'

Uma expressão de qualquer tipo de caractere, como char, nchar, varchar ou nvarchar. Para os tipos de dados char e varchar , a ordenação deve ser uma ordenação UTF-8 válida. Você pode especificar literais de cadeia de caracteres ou valores de ponto de código Unicode ou UTF-16 ou ambos. character_expression dá suporte a 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 é \.

Tipos de retorno

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

Exemplos

R. 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 Rosto Sorridente com Boca Aberta. A ordenação de banco de dados deve ser uma ordenação UTF-8 se a entrada for dos tipos de dados char ou varchar .

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');

Veja a seguir o conjunto de resultados.

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

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

O exemplo a seguir usa a UNISTR função 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', '#');

Veja a seguir o conjunto de resultados.

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

C. Usar 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 ordenação 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, '$');

Veja a seguir o conjunto de resultados.

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

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

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

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

Veja a seguir o conjunto de resultados.

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