uniqueidentifier (Transact-SQL)

這是 16 位元組的 GUID。

備註

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)