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 escapeFlexibilidade 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
------------------------
はい