ОТКЛЮЧИТЬ АДБЛОК

ADBlock блокирует некоторый контент на сайте

ADBlock errore

вопрос

<Р> Я хочу, чтобы создать столбец VARCHAR в SQL, который должен содержать N'guid' в то время как guid является сгенерирована GUID на .NET ( Guid.NewGuid .) - класс System.Guid

<Р> Что такое длина varchar я должен ожидать от GUID? Это статическая длина?

<Р> Должен ли я использовать nvarchar (будет GUID когда-либо использовать символы Unicode)?

varchar(Guid.Length)
<Р> PS. Я не хочу использовать SQL строку Guid типа данных. Я просто спрашиваю, что Guid.MaxLength.

Решение

<Р> Это зависит от того, как форматировать в Guid:

  • <р> Guid.NewGuid().ToString() => 36 символы (Hyphenated)
    выходы: 12345678-1234-1234-1234-123456789abc
  • <Литий> <р> Guid.NewGuid().ToString("D") => <сильные> 36 сильные символы (Hyphenated, такой же, как 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 сильных символы (шестнадцатеричный)
    выходы: {0x12345678,0x1234,0x1234,{0x12,0x34,0x12,0x34,0x56,0x78,0x9a,0xbc}}

ДРУГИЕ СОВЕТЫ

<Р> 36, и GUID будет использовать только 0-9A-F (шестнадцатеричном!).

<Р> 12345678-1234-1234-1234-123456789012 <Р> Это 36 символов в любом GUID - они являются постоянной длиной. Вы можете прочитать немного больше о тонкостях GUIDs .

<Р> Вам понадобится еще два в длину, если вы хотите сохранить фигурные скобки.

<Р> Примечание: 36 длина строки с тире между ними. Они на самом деле число 16-байт.

<Р> правильно вещь, чтобы сделать здесь, чтобы сохранить его как uniqueidentifier - это то полностью индексируемой и т.д. в базе данных. Следующий лучший вариант был бы столбец binary(16):. Стандартные идентификаторы GUID ровно 16 байт в длину

<Р> Если вы должны сохранить его в виде строки, длина действительно сводится к тому, как вы выбираете, чтобы кодировать его. В шестнадцатеричном (АКА-16 базовая кодирование) без переносов, было бы 32 символов (две шестнадцатеричные цифры на байт), поэтому char(32). <Р> Тем не менее, вы можете хотите для хранения дефиса. Если вам не хватает места, но база данных не поддерживает Blobs / GUIDs изначально, вы можете использовать Base64 кодирования и удалить == обивка суффикс; что дает 22 символов, так char(22). Там нет необходимости использовать Unicode, и нет необходимости в переменной длины. - так nvarchar(max) не было бы плохим выбором, например,

<Р> Я считаю, что идентификаторы GUID ограничены длиной до 16 байт (или 32 байт для ASCII-шестнадцатеричного эквивалента).

<Р> являются идентификаторы GUID 128bits, или

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, а; Основание 85 является наименьшим возможным тот, который по-прежнему вписывается в 20 символов:
0 through -r54lj%NUUO[Hi$c2ym0 (base 85, using 0-9A-Za-z!"#$%&'()*+,- chars)
<Р>: -)

<Р> 22 байта, если вы сделаете это следующим образом:

System.Guid guid = System.Guid.NewGuid();
byte[] guidbytes = guid.ToByteArray();
string uuid = Convert.ToBase64String(guidbytes).Trim('=');

<Р> Бинарные строки хранения необработанных данных байт, в то время как символ строки хранения текста. Использование двоичных данных при сохранении значений Хэси-десятичных, такие как SID, 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 и использует 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

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow