Partager via


UNISTR (Transact-SQL)

S’applique à :Azure SQL Database

UNISTR prend en charge les littéraux de chaîne Unicode en vous permettant de spécifier la valeur d’encodage Unicode des caractères dans la chaîne. UNISTR retourne les caractères Unicode correspondant à l’expression d’entrée, comme défini par la norme Unicode.

La séquence d’échappement d’un caractère Unicode peut être spécifiée sous la forme ou \xxxx\+xxxxxx, où xxxx est une valeur de point de code UTF-16 valide et xxxxxx est une valeur de point de code Unicode valide. Vous pouvez rechercher des valeurs de point de code Unicode dans les graphiques de code Unicode.

Par rapport aux fonctions comme NCHAR, UNISTR offre un moyen plus flexible et complet de gérer les caractères Unicode. Par exemple, si NCHAR pouvez convertir une valeur Unicode unique en caractère, UNISTR gère plusieurs valeurs Unicode et séquences d’échappement, ce qui facilite l’utilisation de chaînes complexes qui incluent différents caractères Unicode.

Conventions de la syntaxe Transact-SQL

Syntaxe

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

Remarques

Les principaux avantages de UNISTR sont les suivants :

  • prise en charge des séquences d’échappement Unicode: UNISTR vous permet de spécifier des caractères Unicode à l’aide de séquences d’échappement

  • Flexibilité avec les types d’entrée: UNISTR prend en charge différents types de caractères tels que char, nchar, varcharet nvarchar. Pour les types de données char et varchar , le classement doit être un classement UTF-8 valide.

  • caractères d’échappement personnalisés: vous pouvez définir un caractère d’échappement personnalisé pour effectuer la conversion nécessaire de valeurs Unicode en jeu de caractères de chaîne.

Prise en charge des pages de codes

La fonction UNISTR n’est pas compatible avec les pages de codes héritées, ce qui signifie qu’elle ne prend pas en charge les classements qui utilisent des jeux de caractères non Unicode. Ces classements avec des pages de codes héritées peuvent être identifiés à l’aide de la requête suivante.

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

Pour plus d’informations, consultez annexe G DBCS/Tables de mappage Unicode et annexe H pages de codes.

Arguments

'character_expression'

Expression de n’importe quel type de caractère, tel que char, nchar, varchar ou nvarchar. Pour les types de données char et varchar , le classement doit être un classement UTF-8 valide. Vous pouvez spécifier des littéraux de chaîne ou des valeurs de point de code UTF-16 ou les deux. character_expression prend en charge une longueur aussi grande que varchar(max) et nvarchar(max).

N’unicode_escape_character'

Caractère unique représentant une séquence d’échappement Unicode définie par l’utilisateur. S’il n’est pas fourni, la valeur par défaut est \.

Types de retour

Valeur de chaîne dont la longueur et le type dépendent des types d’entrée.

Exemples

R. Utiliser UNISTR et la fonction NCHAR

Les exemples suivants utilisent toutes les UNISTR fonctions pour effectuer la conversion nécessaire des valeurs Unicode en jeu de caractères de chaîne, afin d’afficher le caractère unicode Visage souriant avec bouche ouverte. Le classement de base de données doit être un classement UTF-8 si l’entrée est de types de données char ou varchar .

Utilisation de UNISTR et de NCHAR :

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

Cet exemple d’exemple peut également être écrit :

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

Voici le jeu de résultats.

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

B. Utiliser la fonction UNISTR avec un caractère d’échappement défini par l’utilisateur

L’exemple suivant utilise la UNISTR fonction avec un caractère d’échappement personnalisé pour effectuer la conversion nécessaire de l’Unicode en jeu de caractères de chaîne.

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

Voici le jeu de résultats.

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

C. Utiliser la fonction UNISTR en combinant des littéraux de chaîne et des points de code Unicode

Dans l’exemple suivant, UNISTR est utilisé avec un caractère d’échappement défini par l’utilisateur ($) et un type de données varchar avec le classement UTF-8. Il combine des littéraux de chaîne avec une valeur de point de code Unicode :

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

Voici le jeu de résultats.

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

D. Utiliser la fonction UNISTR pour les caractères au-delà de la limite UTF-8

Si vous devez utiliser un jeu de caractères au-delà de UTF-8, vous devez convertir la séquence de caractères en UTF-8 à l’aide de la clause COLLATE. Voici un exemple :

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

Voici le jeu de résultats.

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