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’échappementFlexibilité 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
------------------------
はい