uniqueidentifier (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Microsoft Fabric の SQL 分析エンドポイントMicrosoft Fabric のウェアハウス

16 バイトの GUID です。

解説

列またはのローカル変数 uniqueidentifier データ型は、次の方法で値に初期化することができます。

  • NEWID または NEWSEQUENTIALID 関数を使用する。
  • 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 データ型はサポートされません。

次の例では、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