Le stringhe binarie memorizzano dati a byte non elaborati, mentre le stringhe di caratteri memorizzano il testo. Utilizzare i dati binari quando si memorizzano valori hexi-decimali come SID
,GUID
e così via. Il tipo di dati uniqueidentifier contiene un identificatore univoco globale o GUID. Questo valore viene derivato utilizzando la funzione NEWID () per restituire un valore univoco per tutti gli oggetti. Viene memorizzato come valore binario ma viene visualizzato come stringa di caratteri.
Ecco un esempio
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
Si applica a: SQL Server L'esempio seguente crea la tabella cust con un tipo di dati uniqueidentifier e utilizza NEWID per riempire la tabella con un valore predefinito. Nell'assegnare il valore predefinito di NEWID (), ogni riga nuova ed esistente ha un valore univoco per la colonna 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
Guid.NewGuid
non ha "lunghezza stringa" implicita; Tutto dipende dal formato utilizzato nel ToString (il no-topicToString
utilizza la formattazione "D"). Preferisco "B" in quanto è più facile "vedere che è un GUID", ma è solo familiarità e convenzione.