sql >> データベース >  >> RDS >> Sqlserver

NEWID()を使用してSQLServerで一意の値を作成する

    SQL Serverでは、NEWID()を使用できます 一意の値を作成する関数。

    具体的には、RFC4122準拠の関数であり、タイプ uniqueidentifierの一意の値を作成します。 。

    NEWID()の値 生成は、ランダムに生成された16バイトのGUID(グローバル一意識別子)です。これは、UUID(Universally Unique IDentifier)とも呼ばれます。

    例1-基本的なSELECTステートメント

    これが簡単なSELECTです NEWID()を返すステートメント :

    SELECT NEWID() AS Result;
    

    結果:

    +--------------------------------------+
    | Result                               |
    |--------------------------------------|
    | ab1b299b-9781-48d9-bedc-f238f6f5cc57 |
    +--------------------------------------+
    

    RFC4122には、5つのバージョン(またはサブタイプ)が含まれています。 4 があるため、この例ではRFC4122バージョン4を使用していることがわかります。 関連する場所で。バージョン4は、GUIDがランダムまたは疑似ランダムに生成されることを指定しています。他のバージョンでは、他の方法を使用してGUIDを生成します。

    このページのすべての例を見ると、すべてが一意であることがわかりますが、それらはすべて xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx の形式を取ります。 、つまり、これらはすべてバージョン4 GUIDであるため、すべてランダムまたは疑似ランダムに生成されます。

    例2–変数でNEWID()を使用する

    NEWID()の値を入力する例を次に示します。 変数に変換し、それを選択します。

    DECLARE @myguid uniqueidentifier = NEWID();
    SELECT @myguid AS Result;
    

    結果:

    +--------------------------------------+
    | Result                               |
    |--------------------------------------|
    | b6cfb25a-3f81-4e5a-a304-a4b44fb5dbeb |
    +--------------------------------------+
    

    例3–文字列に変換

    変数値を文字列に変換してから出力する例を次に示します。

    DECLARE @myguid uniqueidentifier = NEWID();
    PRINT 'Value: '+ CONVERT(varchar(255), @myguid);
    

    結果:

    Value: 9A229A64-6FE0-417E-B07D-78444EA7DA5B
    

    例4–データベースのデフォルト値として

    NEWID()の使用例を次に示します。 データベース列のデフォルト値として。

    USE Test;
    CREATE TABLE Customer 
    (
        CustomerId uniqueidentifier NOT NULL DEFAULT NEWID(),
        CustomerName varchar(70) NOT NULL,
    );
    
    INSERT Customer (CustomerName)
    VALUES
        ('Peter Griffin'),
        ('Marge Simpson'),
        ('Borat Schwarzenegger');
    
    SELECT * FROM Customer;
    

    結果:

    +--------------------------------------+----------------------+
    | CustomerId                           | CustomerName         |
    |--------------------------------------+----------------------|
    | 6f7f606f-9ed3-48f3-b70e-90d901591203 | Peter Griffin        |
    | 79b470df-a317-4359-92af-35cd6394eb5d | Marge Simpson        |
    | ed59b667-4cd4-4849-b697-ec2410d7b7ff | Borat Schwarzenegger |
    +--------------------------------------+----------------------+
    

    この例では、一意の識別子を含むテーブルを作成します NEWID()によって生成されたデフォルト値の列 。次に、そのテーブルにデータを挿入します。これを行うとき、CustomerIdを指定しません 値であるため、デフォルト値(NEWID()によって生成されます)を使用します )。最後に、テーブルの内容を選択します。これは、各行の挿入で生成されたGUIDを使用することを示しています。

    例5–INSERTステートメントで明示的に指定

    NEWID()を明示的に使用することもできます データを挿入するとき。

    このように:

    INSERT Customer (CustomerId, CustomerName)
    VALUES
        (NEWID(), 'Bart Farnsworth'),
        (NEWID(), 'Bruce Norris');
    
    SELECT * FROM Customer;
    

    結果:

    +--------------------------------------+----------------------+
    | CustomerId                           | CustomerName         |
    |--------------------------------------+----------------------|
    | 6f7f606f-9ed3-48f3-b70e-90d901591203 | Peter Griffin        |
    | 79b470df-a317-4359-92af-35cd6394eb5d | Marge Simpson        |
    | ed59b667-4cd4-4849-b697-ec2410d7b7ff | Borat Schwarzenegger |
    | a21e9a65-5efd-43ea-bd8b-8040b379617a | Bart Farnsworth      |
    | 5ae0e501-3944-4be0-bf8a-ba964d8d13ed | Bruce Norris         |
    +--------------------------------------+----------------------+
    

    ここではNEWID()を使用します 行ごとに一意のIDを生成するため、デフォルト値は使用されません。いずれにせよ、どちらもNEWID()によって生成されます したがって、効果的に同じ結果、つまりランダムに生成されたGUIDが得られます。


    1. PostgreSQLデータベースのアーキテクチャとメモリの調整

    2. OracleParameter.ValueをInt32に変換します

    3. RLIKEがMySQLでどのように機能するか

    4. 複数のアレイを並列にネスト解除します