422

SQLでvarchar列を作成します。この列には、.NET(Guid.NewGuidN'guid' )によって生成されたGUID(クラスSystem.Guid)が含まれている必要があります。guid

varcharGUIDから期待できる長さはどれくらいですか?静的な長さですか?

使用する必要がありますかnvarchar(GUIDはUnicode文字を使用しますか)?

varchar(Guid.Length)

PS。SQL行GUIDデータ型を使用したくありません。私はただ何であるかを尋ねていますGuid.MaxLength

4

7 に答える 7

883

Guid のフォーマット方法によって異なります。

  • Guid.NewGuid().ToString()= 36文字 (ハイフン付き)
    出力:12345678-1234-1234-1234-123456789abc

  • Guid.NewGuid().ToString("D")= 36文字 (ハイフン付き、 と同じToString())
    出力:12345678-1234-1234-1234-123456789abc

  • Guid.NewGuid().ToString("N")= 32文字 (数字のみ)
    出力:12345678123412341234123456789abc

  • Guid.NewGuid().ToString("B")= 38文字 (中かっこ)
    出力:{12345678-1234-1234-1234-123456789abc}

  • Guid.NewGuid().ToString("P")= 38文字 (括弧)
    出力:(12345678-1234-1234-1234-123456789abc)

  • Guid.NewGuid().ToString("X")= 68文字 (16 進数)
    出力:{0x12345678,0x1234,0x1234,{0x12,0x34,0x12,0x34,0x56,0x78,0x9a,0xbc}}

于 2010-12-16T08:53:05.297 に答える
71

36であり、GUIDは0-9A-F(16進数!)のみを使用します。

12345678-1234-1234-1234-123456789012

これは、任意のGUIDで36文字です。これらは一定の長さです。GUIDの複雑さについては、ここでもう少し読むことができます。

ブレースを保管する場合は、さらに2つの長さが必要になります。

注:36は、ダッシュを間に挟んだストリングの長さです。実際には16バイトの数値です。

于 2009-06-09T04:46:41.203 に答える
10

GUIDは16バイトの長さ(またはASCII 16進数に相当する場合は32バイト)に制限されていると思います。

于 2009-06-09T04:47:35.460 に答える
7

GUID は 128 ビット、または

0 through ffffffffffffffffffffffffffffffff (hex) or 
0 through 340282366920938463463374607431768211455 (decimal) or 
0 through 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 (binary, base 2) or 
0 through 91"<b.PX48m!wVmVA?1y (base 95)

そうです、最小 20 文字の長さです。これは実際には 4.25 ビット以上を浪費しているため、95 より小さい基数を使用しても同様に効率的です。base 85 は、20 文字に収まる可能な最小のものです。

0 through -r54lj%NUUO[Hi$c2ym0 (base 85, using 0-9A-Za-z!"#$%&'()*+,- chars)

:-)

于 2015-10-29T04:02:09.510 に答える
1

バイナリ文字列は未加工のバイト データを格納し、文字列はテキストを格納します。SIDなどの16 進数値を格納する場合は、バイナリ データを使用GUIDします。uniqueidentifier データ型には、グローバルに一意の識別子 (GUID) が含まれます。この値は、NEWID() 関数を使用して導出され、すべてのオブジェクトに固有の値を返します。バイナリ値として格納されますが、文字列として表示されます。

ここに例があります。

USE AdventureWorks2008R2;
GO
CREATE TABLE MyCcustomerTable
(
    user_login   varbinary(85) DEFAULT SUSER_SID()
    ,data_value   varbinary(1)
);
GO

INSERT MyCustomerTable (data_value)
    VALUES (0x4F);
GO

適用対象: SQL Server 次の例では、uniqueidentifier データ型で cust テーブルを作成し、NEWID を使用してテーブルに既定値を入力します。NEWID() のデフォルト値を割り当てる際に、新規および既存の各行は、CustomerID 列に一意の値を持ちます。

-- Creating a table using NEWID for uniqueidentifier data type.  
CREATE TABLE cust  
(  
 CustomerID uniqueidentifier NOT NULL  
   DEFAULT newid(),  
 Company varchar(30) NOT NULL,  
 ContactName varchar(60) NOT NULL,   
 Address varchar(30) NOT NULL,   
 City varchar(30) NOT NULL,  
 StateProvince varchar(10) NULL,  
 PostalCode varchar(10) NOT NULL,   
 CountryRegion varchar(20) NOT NULL,   
 Telephone varchar(15) NOT NULL,  
 Fax varchar(15) NULL  
);  
GO  
-- Inserting 5 rows into cust table.  
INSERT cust  
(CustomerID, Company, ContactName, Address, City, StateProvince,   
 PostalCode, CountryRegion, Telephone, Fax)  
VALUES  
 (NEWID(), 'Wartian Herkku', 'Pirkko Koskitalo', 'Torikatu 38', 'Oulu', NULL,  
 '90110', 'Finland', '981-443655', '981-443655')  
,(NEWID(), 'Wellington Importadora', 'Paula Parente', 'Rua do Mercado, 12', 'Resende', 'SP',  
 '08737-363', 'Brasil', '(14) 555-8122', '')  
,(NEWID(), 'Cactus Comidas para Ilevar', 'Patricio Simpson', 'Cerrito 333', 'Buenos Aires', NULL,   
 '1010', 'Argentina', '(1) 135-5555', '(1) 135-4892')  
,(NEWID(), 'Ernst Handel', 'Roland Mendel', 'Kirchgasse 6', 'Graz', NULL,  
 '8010', 'Austria', '7675-3425', '7675-3426')  
,(NEWID(), 'Maison Dewey', 'Catherine Dewey', 'Rue Joseph-Bens 532', 'Bruxelles', NULL,  
 'B-1180', 'Belgium', '(02) 201 24 67', '(02) 201 24 68');  
GO
于 2017-10-07T12:49:24.320 に答える