guid - GUID的字符串长度是多少?

保存GUID的varchar长度是多少? 是不是静态长度?

我应不应该使用nvarchar (GUID是否使用Unicode字符)?

 
varchar(Guid.Length)

 

时间:

这取决于如何格式化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个字符(十六进制)
    输出: {0x12345678,0x1234,0x1234,{0x12,0x34,0x12,0x34,0x56,0x78,0x9a,0xbc}}

36,并且GUID将只使用 0 -9A-F ( 幻影) 。

12345678-1234-1234-1234-123456789012

在任何GUID--they是解决方案的恒 length, 36 characters. 你可以在这里阅读关于 guid 复杂性的更多信息,参见参考资料。

如果你想要存储大括号,你还需要两个长度。

注意:36是带破折号的字符串长度。 实际上是 16个-byte数字。

我相信GUID被限制为16-byte长度(或32个字节(相当于ASCII十六进制))。

在正确的database, 处这里来说,这样做是为了将它存储为然后 uniqueidentifier - 这是完全可以转位, next-best选项将是 binary(16) 列: 标准guid的长度正好为 16字节。

如果你必须将它的存储为字符串,那么长度实际上取决于你如何选择编码它。 如果十六进制( 又名base-16编码) 没有连字符,它将是 32个字符( 每字节两个十六进制数字),所以 char(32)

但是,你可能想要 来存储连字符。 如果你是本身就忽视了空间,但是你的数据库不支持 blob/guid,你可以用 Base64 编码并移除 == 填充为你提供了,所以 char(22) 22字符的后缀; 没有必要使用 Unicode,也不需要 variable-length - 所以 nvarchar(max) 是一个错误的选择,例如。

...