UNISTR (Transact-SQL)
van toepassing op:Azure SQL Database-
UNISTR
biedt ondersteuning voor letterlijke unicode-tekenreeksen door de Unicode-coderingswaarde van tekens in de tekenreeks op te geven.
UNISTR
retourneert de Unicode-tekens die overeenkomen met de invoerexpressie, zoals gedefinieerd door de Unicode-standaard.
De escapereeks voor een Unicode-teken kan worden opgegeven in de vorm van \xxxx
of \+xxxxxx
, waarbij xxxx
een geldige UTF-16-codepuntwaarde is en xxxxxx
een geldige Unicode-codepuntwaarde is. U kunt Unicode-codepuntwaarden opzoeken in de Unicode-codegrafieken.
Vergeleken met functies zoals NCHAR
biedt UNISTR
een flexibelere en uitgebreidere manier om Unicode-tekens te verwerken. Hoewel NCHAR
bijvoorbeeld één Unicode-waarde naar een teken kan converteren, UNISTR
meerdere Unicode-waarden en escapereeksen verwerkt, zodat u gemakkelijker kunt werken met complexe tekenreeksen die verschillende Unicode-tekens bevatten.
Transact-SQL syntaxisconventies
Syntaxis
UNISTR ( 'character_expression' [ , 'unicode_escape_character' ] )
Opmerkingen
Belangrijke voordelen van UNISTR
zijn:
Ondersteuning voor Unicode-escapereeksen:
UNISTR
kunt u Unicode-tekens opgeven met behulp van escapereeksenFlexibiliteit met invoertypen:
UNISTR
ondersteunt verschillende tekentypen, zoals teken, nchar, varcharen nvarchar. Voor teken en varchar gegevenstypen moet de sortering een geldige UTF-8-sortering zijn.aangepaste escapetekens: u kunt een aangepast escape-teken definiëren om de benodigde conversie van Unicode-waarden uit te voeren in een tekenreekstekenset.
Ondersteuning voor codepagina's
De UNISTR
-functie is niet compatibel met verouderde codepagina's, wat betekent dat deze geen sorteringen ondersteunt die gebruikmaken van niet-Unicode-tekensets. Deze sorteringen met verouderde codepagina's kunnen worden geïdentificeerd met behulp van de volgende query.
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 */
);
Zie bijlage G DBCS/Unicode-toewijzingstabellen en bijlage H-codepagina'svoor meer informatie.
Argumenten
'character_expression'
Een expressie van elk tekentype, zoals teken, nchar, varcharof nvarchar. Voor teken en varchar gegevenstypen moet de sortering een geldige UTF-8-sortering zijn. U kunt letterlijke tekenreekswaarden of Unicode- of UTF-16-codepuntwaarden of beide opgeven.
character_expression
ondersteunt een lengte die zo groot is als varchar(max) en nvarchar(max).
N'unicode_escape_character'
Eén teken dat een door de gebruiker gedefinieerde Unicode-escapereeks vertegenwoordigt. Als deze niet is opgegeven, wordt de standaardwaarde \
.
Retourtypen
Een tekenreekswaarde waarvan de lengte en het type afhankelijk zijn van de invoertypen.
Voorbeelden
Een. UNISTR gebruiken versus de functie NCHAR
In de volgende voorbeelden worden alle UNISTR
functies gebruikt om de benodigde conversie van de Unicode-waarden uit te voeren in tekenreekstekenset, om het unicode-teken Smiling Face with Open Mouth weer te geven. De databasesortering moet een UTF-8-sortering zijn als de invoer van teken of varchar gegevenstypen is.
Met behulp van UNISTR
en NCHAR
:
SELECT N'Hello! ' + NCHAR(0xd83d) + NCHAR(0xde00);
Dit voorbeeldvoorbeeld kan ook worden geschreven:
SELECT UNISTR(N'Hello! \D83D\DE00');
SELECT UNISTR(N'Hello! \+01F603');
Dit is de resultatenset.
-----------
Hello! 😃
B. UNISTR-functie gebruiken met door de gebruiker gedefinieerd escape-teken
In het volgende voorbeeld wordt de functie UNISTR
met een aangepast escape-teken gebruikt om de benodigde conversie van unicode uit te voeren in een tekenreekstekenset.
SELECT UNISTR(N'ABC#00C0#0181#0187', '#');
Dit is de resultatenset.
-----------
ABCÀƁƇ
C. De functie UNISTR gebruiken door letterlijke tekenreeksen en Unicode-codepunten te combineren
In het volgende voorbeeld wordt UNISTR
gebruikt met een door de gebruiker gedefinieerd escape-teken ($
) en een varchar gegevenstype met UTF-8-sortering. Hiermee worden letterlijke tekenreeksen gecombineerd met een Unicode-codepuntwaarde:
SELECT UNISTR('I $2665 Azure SQL.' COLLATE Latin1_General_100_CI_AS_KS_SC_UTF8, '$');
Dit is de resultatenset.
------------------
I ♥ Azure SQL.
D. De functie UNISTR gebruiken voor tekens die buiten de UTF-8-limiet komen
Als u een tekenset buiten UTF-8 wilt gebruiken, moet u de tekenreeks converteren naar UTF-8 met behulp van de COLLATE
-component. Hier volgt een voorbeeld:
SELECT UNISTR('\306F\3044' COLLATE Latin1_General_100_BIN2_UTF8) AS Yes_in_Japanese_Hiragana;
Dit is de resultatenset.
Yes_in_Japanese_Hiragana
------------------------
はい