Was ist die Stringlänge einer GUID?
Ich möchte ein varchar-Spalte in SQL, enthalten sollte N'guid'
während guid
ist eine generierte GUID .NET (Guid.NewGuid) - Klassen-System.Guid.
Was ist die Länge der varchar
sollte ich erwarten von einer GUID?
Ist es eine statische Länge?
Sollte ich nvarchar
(GUID wird immer die Verwendung der Unicode-Zeichen)?
varchar(Guid.Length)
PS. Ich will nicht verwenden Sie eine SQL Zeile guid-Datentyp. Ich bin einfach nur zu Fragen, was ist Guid.MaxLength
.
InformationsquelleAutor der Frage Shimmy | 2009-06-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es hängt davon ab, wie format der Guid:
Guid.NewGuid().ToString()
=> 36 Zeichen (Bindestrich)Ausgänge:
12345678-1234-1234-1234-123456789abc
Guid.NewGuid().ToString("D")
=> 36 Zeichen (Bindestrich, wieToString()
)Ausgänge:
12345678-1234-1234-1234-123456789abc
Guid.NewGuid().ToString("N")
=> 32 Zeichen (nur zahlen)Ausgänge:
12345678123412341234123456789abc
Guid.NewGuid().ToString("B")
=> 38 Zeichen (Klammern)Ausgänge:
{12345678-1234-1234-1234-123456789abc}
Guid.NewGuid().ToString("P")
=> 38 Zeichen (Klammern)Ausgänge:
(12345678-1234-1234-1234-123456789abc)
Guid.NewGuid().ToString("X")
=> 68 - Zeichen (Hexadezimal)Ausgänge:
{0x12345678,0x1234,0x1234,{0x12,0x34,0x12,0x34,0x56,0x78,0x9a,0xbc}}
InformationsquelleAutor der Antwort stevehipwell
36, und die GUID wird nur 0-9A-F (hexadezimal!).
12345678-1234-1234-1234-123456789012
Ist 36 Zeichen in jeder GUID-Sie sind von konstanter Länge. Sie können Lesen Sie ein bisschen mehr über die Feinheiten der GUIDs hier.
Müssen Sie zwei mehr in der Länge, wenn Sie möchten, speichern Sie die geschweiften Klammern.
Hinweis: 36 ist die Länge der Zeichenfolge mit den Strichen dazwischen. Sie sind eigentlich 16-byte-zahlen.
InformationsquelleAutor der Antwort Eric
Den richtigewas hier zu tun ist, um es zu speichern als
uniqueidentifier
- dieser ist dann voll mit Wendeschneidplatten, etc. an der Datenbank. Die nächste beste option wäre einbinary(16)
Spalte: standard-GUIDs sind genau 16 bytes lang ist.Wenn Sie speichern Sie es als string, die Länge kommt wirklich darauf an, wie Sie sich entscheiden, zu codieren. Als hex (AKA base-16-Kodierung) ohne Bindestriche, es wäre 32 Zeichen (zwei hex-Ziffern pro byte), so
char(32)
.Allerdings könnten Sie wollen speichern Sie die Bindestriche. Wenn Sie kurz auf Raum, aber Ihre Datenbank nicht unterstützt blobs /guids nativ, könnten Sie Base64 Kodierung und entfernen Sie die
==
Polsterung suffix, das gibt Sie 22 Zeichen, sochar(22)
. Es gibt keine Notwendigkeit, Unicode zu verwenden, und keine Notwendigkeit für die variable-Länge - sonvarchar(max)
wäre eine schlechte Wahl, zum Beispiel.InformationsquelleAutor der Antwort Marc Gravell
Ich glaube GUIDs sind gezwungen, an 16-byte-Längen (oder 32 Byte für ASCII-hex-Entsprechung).
InformationsquelleAutor der Antwort Ross Light
GUIDs sind 128bits, oder
Also ja, min 20 Zeichen lang sein, das ist eigentlich Verschwendung mehr als 4,25 bits, so können Sie sich genauso effizient mit kleineren Basen als 95; Basis 85 die kleinsten möglich, eine, die passt noch in 20 chars:
🙂
InformationsquelleAutor der Antwort cnd
22 bytes, wenn Sie es so machen:
InformationsquelleAutor der Antwort Qodex
Binär-strings speichern von raw-byte-Daten, während Zeichenketten speichern von text. Verwenden binäre Daten, wenn die Speicherung hexi-dezimal-Werte, wie
SID
GUID
und so weiter. Der uniqueidentifier-Datentyp enthält einen globally unique identifier oder GUID. DieseWert ergibt sich durch die Verwendung der NEWID () - Funktion einen Wert zurück, der einzigartig für alle Objekte. Es ist gespeichert, wie ein binärer Wert, aber es wird dargestellt als Zeichenkette.
Ist hier ein Beispiel.
Gilt für: SQL Server
Im folgenden Beispiel wird die cust-Tabelle mit einem uniqueidentifier-Datentyp und verwendet NEWID zum füllen der Tabelle mit einem Standardwert. Bei der Zuordnung der Standardwert NEWID(), kann jede neue und vorhandene Zeile hat einen eindeutigen Wert für die CustomerID-Spalte.
InformationsquelleAutor der Antwort Hunter