共用方式為


uniqueidentifier (Transact-SQL)

這是 16 位元組的 GUID。

適用於:SQL Server (SQL Server 2008 透過目前版本)、Windows Azure SQL 資料庫 (初始版本,透過目前版本)。

備註

uniqueidentifier 資料類型的資料行或本機變數可以利用下列方法,初始化為一個值:

  • 使用 NEWID 函數。

  • 從 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 值轉換成 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 (SQL Server)

資料類型 (Transact-SQL)

DECLARE @local\_variable (Transact-SQL)

NEWID (Transact-SQL)

SET @local\_variable (Transact-SQL)

概念

異動複寫的可更新訂閱