uniqueidentifier (Transact-SQL)
適用於:sql Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Platform System (PDW) SQL 分析端點Microsoft網狀架構 SQL 資料庫中的 Microsoft 網狀架構倉儲Microsoft網狀架構
這是 16 位元組的 GUID。
備註
uniqueidentifier 資料類型的資料行或本機變數可以利用下列方法,初始化為一個值:
- 使用 NEWID 或 NEWSEQUENTIALID 函式。
- 從 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 格式的字串常數轉換,其中每一個 x 是範圍 0-9 或 a-f 的十六進位數字。 例如,6F9619FF-8B86-D011-B42D-00C04FC964FF 是有效的 uniqueidentifier 值。
比較運算子可以搭配使用 uniqueidentifier 值。 不過排序並不是比較兩值的位元模式加以實作的。 您可以針對 uniqueidentifier 值執行的唯一作業是比較 (=、<><><=、>=) 和檢查其是否為 NULL (IS NULL 和 IS NOT NULL)。 其他算術運算子一律不能使用。 除了 IDENTITY 之外,所有的資料行條件約束和屬性,都可以用於 uniqueidentifier 資料類型。
具有更新訂閱的合併式複寫和異動複寫,都使用 uniqueidentifier 資料行,以確保資料列可以在多份資料表唯一識別。
轉換 Uniqueidentifier 資料
uniqueidentifier 類型會基於轉換字元運算式的用途,而被視為字元類型;因此會受到轉換成字元類型之截斷規則的影響。 亦即,將字元運算式轉換成不同大小的字元資料類型時,對新資料類型而言太大的值會被截斷。 請參閱<範例>一節。
限制事項
這些工具和功能不支援 uniqueidentifier
資料類型:
- PolyBase
- 適用於平行處理資料倉儲的 dwloader 載入工具
範例
下列範例會將 uniqueidentifier
值轉換成 char
資料類型。
DECLARE @myid uniqueidentifier = NEWID();
SELECT CONVERT(CHAR(255), @myid) AS 'char';
下列範例會示範當值對於要轉換的目標資料類型而言太大時,資料的截斷方式。 因為 uniqueidentifier 類型限制為 36 個字元,所以超過該長度的字元會被截斷。
DECLARE @ID NVARCHAR(max) = N'0E984725-C51C-4BF4-9960-E1C80E27ABA0wrong';
SELECT @ID, CONVERT(uniqueidentifier, @ID) AS TruncatedValue;
結果集如下所示。
String TruncatedValue
-------------------------------------------- ------------------------------------
0E984725-C51C-4BF4-9960-E1C80E27ABA0wrong 0E984725-C51C-4BF4-9960-E1C80E27ABA0
(1 row(s) affected)
另請參閱
ALTER TABLE (Transact-SQL)
CAST 和 CONVERT (Transact-SQL)
CREATE TABLE (Transact-SQL)
資料類型 (Transact-SQL)
DECLARE @local_variable (Transact-SQL)
NEWID (Transact-SQL)
NEWSEQUENTIALID (Transact-SQL)
SET @local_variable (Transact-SQL)
Updatable Subscriptions for Transactional Replication