UNISTR (Transact-SQL)

适用于:Azure SQL 数据库

UNISTR 通过允许你在字符串中指定字符的 Unicode 编码值,提供对 Unicode 字符串文本的支持。 UNISTR 返回输入表达式的 Unicode 字符(由 Unicode 标准定义)。

Unicode 字符的转义序列可以采用或有效 xxxx UTF-16 代码点值的形式\xxxx\+xxxxxx指定,并且xxxxxx是有效的 Unicode 代码点值。 可以在 Unicode 代码图表查找 Unicode 代码点值。

Transact-SQL 语法约定

语法

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

注意

若要查看 SQL Server 2014 (12.x) 及更早版本的 Transact-SQL 语法,请参阅早期版本文档

参数

character_expression

任何字符类型的表达式,例如 char、ncharvarchar 或 nvarchar 对于 charvarchar 数据类型,排序规则应该是有效的 UTF-8 排序规则。

N'unicode_escape_character'

表示用户定义的 Unicode 转义序列的单个字符。 如果未提供,则默认值为 \

返回类型

长度和类型的字符串值取决于输入类型。

示例

A. 使用 UNISTR 与 NCHAR 函数

以下示例都使用 UNISTR 函数将 Unicode 值转换为字符串字符集的必要转换,以显示 Unicode 字符笑脸与打开的口角。 如果输入为 char 或 varchar 数据类型,则数据库排序规则必须是 UTF-8 排序规则。

使用 UNISTRNCHAR

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

此示例也可以编写:

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

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

下面是结果集:

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

B. 将 UNISTR 函数与用户定义的转义字符配合使用

以下示例使用 UNISTR 具有自定义转义字符的函数来执行将 Unicode 转换为字符串字符集的必要转换。

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

下面是结果集:

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