次の方法で共有


uniqueidentifier (Transact-SQL)

適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics 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