適用於: SQL Server 2025 (17.x)
Azure SQL Database Azure
SQL Managed Instance
SQL database in Microsoft Fabric
UNISTR 可讓您在字串中指定字元的 Unicode 編碼值,以提供 Unicode 字串常值的支援。
UNISTR 傳回與輸入表達式對應的 Unicode 字元,如 Unicode 標準所定義。
Unicode 字元的逸出序列可以用 或 \xxxx的形式\+xxxxxx指定,其中 xxxx 是有效的UTF-16字碼點值,而 xxxxxx 是有效的Unicode字碼點值。 您可以在 Unicode 程式代碼圖表中查閱 Unicode 程式代碼點值。
與 NCHAR等函式相比,UNISTR 提供更靈活、更全面的方法來處理 Unicode 字元。 例如,雖然 NCHAR 可以將單一 Unicode 值轉換成字元,UNISTR 處理多個 Unicode 值和逸出序列,讓您更輕鬆地處理包含各種 Unicode 字元的複雜字串。
Note
UNISTR 可在 Azure SQL 受控執行個體中使用 SQL Server 2025 或 一律up-to日期更新原則。
Syntax
UNISTR ( 'character_expression' [ , 'unicode_escape_character' ] )
Remarks
UNISTR 的主要優點包括:
支援 Unicode 逸出序列:
UNISTR可讓您使用逸出序列指定 Unicode 字元輸入類型 彈性:支援各種字元類型,例如 char 、nchar 、varchar ,以及 nvarchar。 針對 char 和 varchar 數據類型,定序應該是有效的 UTF-8 定序。 自定義逸出字元:您可以定義自定義逸出字元,以執行將 Unicode 值轉換成字元串字元集的必要轉換。
||管道運算子可在使用 SQL Server 2025 或 Always-up-to-date更新原則設定的 Azure SQL 受控執行個體中使用。
代碼頁支援
UNISTR 函式與舊版代碼頁不相容,這表示不支援使用非 Unicode 字元集的定序。 您可以使用下列查詢來識別具有舊版代碼頁的這些定序。
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/Unicode 對應資料表 和 附錄 H 代碼頁。
Arguments
'character_expression'
任何字元類型的運算式,例如 char、nchar、varchar 或 nvarchar。 針對 char 和 varchar 數據類型,定序應該是有效的 UTF-8 定序。 您可以指定字串常值或 Unicode 或 UTF-16 字碼點值或兩者。
character_expression 支援長度 varchar(max) 和 nvarchar(max)。
N'unicode_escape_character'
單一字元,表示用戶定義的 Unicode 逸出序列。 如果未提供預設值為 \。
傳回類型
長度和型別相依於輸入類型的字串值。
Examples
A. 使用 UNISTR 與 NCHAR 函式
下列範例全都使用 函 UNISTR 式來執行將 Unicode 值轉換成字元串字元集的必要轉換,以顯示 Unicode 字元笑臉與開放式嘴。 如果輸入是 char 或 varchar 數據類型,資料庫定序必須是 UTF-8 定序。
使用 UNISTR 與 NCHAR:
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ÀƁƇ
C. 結合字串常值和 Unicode 字碼點,使用 UNISTR 函式
在下列範例中,UNISTR 搭配使用者定義逸出字元 ($) 和具有UTF-8定序的 varchar 資料類型使用。 它會結合字串常值與 Unicode 程式代碼點值:
SELECT UNISTR('I $2665 Azure SQL.' COLLATE Latin1_General_100_CI_AS_KS_SC_UTF8, '$');
結果集如下所示。
------------------
I ♥ Azure SQL.
D. 針對UTF-8限制以外的字元使用UNISTR函式
如果您需要使用 UTF-8 以外的字元集,則必須使用 COLLATE 子句,將字元序列轉換成 UTF-8。 以下是範例:
SELECT UNISTR('\306F\3044' COLLATE Latin1_General_100_BIN2_UTF8) AS Yes_in_Japanese_Hiragana;
結果集如下所示。
Yes_in_Japanese_Hiragana
------------------------
はい