Aracılığıyla paylaş


UNISTR (Transact-SQL)

Şunlar için geçerlidir: SQL Server 2025 (17.x) Microsoft Fabric'teAzure SQL VeritabanıAzure SQL Yönetilen Örneği SQL veritabanı

UNISTR, dizedeki karakterlerin Unicode kodlama değerini belirtmenize izin vererek Unicode dize değişmez değerleri için destek sağlar. UNISTR, Unicode standardı tarafından tanımlandığı gibi giriş ifadesine karşılık gelen Unicode karakterlerini döndürür.

Unicode karakterinin kaçış dizisi \xxxx veya \+xxxxxxbiçiminde belirtilebilir; burada xxxx geçerli bir UTF-16 kod noktası değeridir ve xxxxxx geçerli bir Unicode kod noktası değeridir. Unicode Kod GrafikleriUnicode kod noktası değerlerini arayabilirsiniz.

NCHARgibi işlevlerle karşılaştırıldığında UNISTR, Unicode karakterleri işlemek için daha esnek ve kapsamlı bir yol sağlar. Örneğin, NCHAR tek bir Unicode değerini karaktere dönüştürebileceğinden, UNISTR birden çok Unicode değeri ve kaçış dizisini işler ve çeşitli Unicode karakterleri içeren karmaşık dizelerle çalışmayı kolaylaştırır.

Note

UNISTR , SQL Server 2025 veya Always-up-to-dategüncelleştirme ilkesiyle Azure SQL Yönetilen Örneği'nde kullanılabilir.

Transact-SQL söz dizimi kuralları

Syntax

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

Remarks

UNISTR temel avantajları şunlardır:

  • Unicode kaçış dizileri için Desteği: kaçış dizilerini kullanarak Unicode karakterleri belirtmenize olanak tanır

  • Giriş türleriyle esneklik: UNISTRchar, nchar, varcharve nvarchargibi çeşitli karakter türlerini destekler. karakter ve varchar veri türleri için harmanlama geçerli bir UTF-8 harmanlaması olmalıdır.

  • Özel kaçış karakterleri : Unicode değerlerinin gerekli dönüştürmesini bir dize karakter kümesine gerçekleştirmek için özel bir kaçış karakteri tanımlayabilirsiniz.

Kanallar || işleci, SQL Server 2025 veya Always-up-to-dategüncelleştirme ilkesiyle yapılandırılmış Azure SQL Yönetilen Örneği'nde kullanılabilir.

Kod sayfası desteği

UNISTR işlevi eski kod sayfalarıyla uyumlu değildir, yani Unicode olmayan karakter kümeleri kullanan harmanlamaları desteklemez. Eski kod sayfalarıyla bu harmanlamalar aşağıdaki sorgu kullanılarak tanımlanabilir.

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

Daha fazla bilgi için bkz. Ek G DBCS/Unicode Eşleme Tabloları ve Ek H Kod Sayfaları.

Arguments

'character_expression'

karakter, nchar, varcharveya nvarchargibi herhangi bir karakter türünün ifadesi. karakter ve varchar veri türleri için harmanlama geçerli bir UTF-8 harmanlaması olmalıdır. Dize değişmez değerleri veya Unicode ya da UTF-16 kod noktası değerlerini ya da her ikisini de belirtebilirsiniz. character_expression, varchar(max) ve nvarchar(max)kadar büyük bir uzunluğu destekler.

N'unicode_escape_character'

Kullanıcı tanımlı Unicode kaçış dizisini temsil eden tek bir karakter. Sağlanmazsa, varsayılan değer \olur.

Dönüş türleri

Uzunluğu ve türü giriş türlerine bağlı olan bir dize değeri.

Examples

A. UNISTR ve NCHAR işlevini kullanma

Aşağıdaki örneklerin UNISTR tümü, Unicode değerlerinin dize karakter kümesine gerekli dönüştürmesini gerçekleştirmek ve Açık Ağızlı Yüz Gülümseyen Unicode karakterini görüntülemek için işlevlerini kullanır. Girişin char veya varchar veri türlerinde olması durumunda veritabanı harmanlaması utf-8 harmanlama olmalıdır.

UNISTR ve NCHARkullanma:

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

Bu örnek örnek de yazılabilir:

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

Sonuç kümesi aşağıdadır.

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

B. Kullanıcı tanımlı kaçış karakteriyle UNISTR işlevini kullanma

Aşağıdaki örnek, Unicode'un gerekli dönüştürmesini bir dize karakter kümesine gerçekleştirmek için özel bir kaçış karakteriyle UNISTR işlevini kullanır.

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

Sonuç kümesi aşağıdadır.

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

C. Dize değişmez değerlerini ve Unicode kod noktalarını birleştirerek UNISTR işlevini kullanma

Aşağıdaki örnekte, kullanıcı tanımlı bir kaçış karakteri () ve UTF-8 harmanlamalı veri türü varchar ile kullanılır. Dize değişmez değerlerini Unicode kod noktası değeriyle birleştirir:

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

Sonuç kümesi aşağıdadır.

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

D. UTF-8 sınırını aşan karakterler için UNISTR işlevini kullanma

UTF-8'in ötesinde bir karakter kümesi kullanmanız gerekiyorsa, COLLATE yan tümcesini kullanarak karakter dizisini UTF-8'e dönüştürmeniz gerekir. İşte bir örnek:

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

Sonuç kümesi aşağıdadır.

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