Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Применимо к: Sql Server 2025 (17.x)
База данных
SQL Azure Управляемого экземпляра
SQL Azure в Microsoft Fabric
UNISTR обеспечивает поддержку строковых литералах Юникода, позволяя указать значение кодировки Юникода символов в строке.
UNISTR возвращает символы Юникода, соответствующие входным выражениям, как определено стандартом Юникода.
Escape-последовательность для символа Юникода может быть указана в виде \xxxx или \+xxxxxx, где xxxx допустимое значение точки кода UTF-16 и xxxxxx является допустимым значением кодовой точки Юникода. Значения точек кода Юникода можно найти в диаграммах кода Юникода.
По сравнению с такими функциями, как NCHAR, UNISTR обеспечивает более гибкий и комплексный способ обработки символов Юникода. Например, в то время как NCHAR может преобразовать одно значение Юникода в символ, UNISTR обрабатывает несколько значений Юникода и escape-последовательностей, что упрощает работу со сложными строками, включающими различные символы Юникода.
Note
UNISTRдоступен в Управляемом экземпляре SQL Azure с политикой обновлениядаты sql Server 2025 или Always-up-to-date.
Соглашения о синтаксисе Transact-SQL
Syntax
UNISTR ( 'character_expression' [ , 'unicode_escape_character' ] )
Remarks
К ключевым преимуществам UNISTR относятся:
Поддержка escape-последовательностей Юникода:
UNISTRпозволяет указывать символы Юникода с помощью escape-последовательностейГибкость с типами ввода:
UNISTRподдерживает различные типы символов, такие как char, nchar, varcharи nvarchar. Для типов данных char и varchar параметры сортировки должны быть допустимыми параметрами сортировки UTF-8.Пользовательские escape-символы: можно определить пользовательский escape-символ для выполнения необходимого преобразования значений Юникода в строковый набор символов.
Оператор || каналов доступен в Управляемом экземпляре SQL Azure, настроенном с помощью политики обновленияSQL Server 2025 или Always-up-to-date.
Поддержка кодовой страницы
Функция UNISTR несовместима с устаревшими кодовых страницами, т. е. не поддерживает параметры сортировки, использующие наборы символов, отличных от Юникода. Эти параметры сортировки с устаревшими кодовых страницами можно определить с помощью следующего запроса.
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 */
);
Дополнительные сведения см. в приложении G DBCS/Юникод сопоставления таблиц и приложения H Code Pages.
Arguments
'character_expression'
Выражение любого типа символа, например char, nchar, varchar или nvarchar. Для типов данных char и varchar параметры сортировки должны быть допустимыми параметрами сортировки UTF-8. Можно указать строковые литералы или значения точек кода Юникода или UTF-16 или обоих.
character_expression поддерживает длину как varchar(max) и nvarchar(max).
N'unicode_escape_character'
Один символ, представляющий определяемую пользователем последовательность escape-кода Юникода. Если этот параметр не указан, значение по умолчанию равно \.
Типы возвращаемых данных
Строковое значение, длина и тип которого зависят от типов входных данных.
Examples
A. Использование ЮНИСТР и функции NCHAR
В следующих примерах все функции используются UNISTR для выполнения необходимого преобразования значений Юникода в строковый набор символов, чтобы отобразить символ Юникода, улыбающийся лицом с открытым ротом. Параметры сортировки базы данных должны быть параметрами сортировки UTF-8, если входные данные являются типами данных char или varchar .
При использовании UNISTR и NCHAR:
SELECT N'Hello! ' + NCHAR(0xd83d) + NCHAR(0xde00);
Этот пример также можно записать:
SELECT UNISTR(N'Hello! \D83D\DE00');
SELECT UNISTR(N'Hello! \+01F603');
Вот результирующий набор.
-----------
Hello! 😃
B. Использование функции UNISTR с определяемым пользователем escape-символом
В следующем примере функция используется UNISTR с пользовательским escape-символом для выполнения необходимого преобразования Юникода в строковый набор символов.
SELECT UNISTR(N'ABC#00C0#0181#0187', '#');
Вот результирующий набор.
-----------
ABCÀƁƇ
C. Использование функции UNISTR путем объединения строковых литералом и точек кода Юникода
В следующем примере UNISTR используется с определяемым пользователем escape-символом ($) и типом данных varchar varchar с параметрами сортировки UTF-8. Он объединяет строковые литералы со значением codepoint Юникода:
SELECT UNISTR('I $2665 Azure SQL.' COLLATE Latin1_General_100_CI_AS_KS_SC_UTF8, '$');
Вот результирующий набор.
------------------
I ♥ Azure SQL.
D. Использование функции UNISTR для символов за пределами ограничения UTF-8
Если необходимо использовать набор символов за пределами UTF-8, необходимо преобразовать последовательность символов в UTF-8 с помощью предложения COLLATE. Ниже приведен пример:
SELECT UNISTR('\306F\3044' COLLATE Latin1_General_100_BIN2_UTF8) AS Yes_in_Japanese_Hiragana;
Вот результирующий набор.
Yes_in_Japanese_Hiragana
------------------------
はい