uniqueidentifier (Transact-SQL)

16 バイトの GUID です。

説明

uniqueidentifier 型の列またはローカル変数は、次の方法で初期化できます。

  • NEWID 関数を使用する。

  • xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx の形式の文字列定数を変換する。各 x は 0 ~ 9 または a ~ f の 16 進数です。たとえば、6F9619FF-8B86-D011-B42D-00C04FC964FF は有効な uniqueidentifier 値です。

uniqueidentifier 型の値には比較演算子が使用できます。ただし、2 つの値のビット パターンを比較することによる順序付けは行われません。uniqueidentifier 型の値に対して行うことができる操作は、比較 (=、<>、<、>、<=、>=) および NULL であるかどうかのチェック (IS NULL と IS NOT NULL) だけです。他の算術演算子は使用できません。uniqueidentifier 型では、IDENTITY 以外のすべての列制約とプロパティを使用できます。

更新サブスクリプションでのマージ レプリケーションとトランザクション レプリケーションでは、テーブルの複数のコピーの間で列を確実に一意に識別するため、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)