Search code examples
.netguidvarcharsql-typesstring-length

What is the string length of a GUID?


I want to create a varchar column in SQL that should contain N'guid' while guid is a generated GUID by .NET (Guid.NewGuid) - class System.Guid.

What is the length of the varchar I should expect from a GUID? Is it a static length?

Should I use nvarchar (will GUID ever use Unicode characters)?

varchar(Guid.Length)

PS. I don't want to use a SQL row guid data-type. I am just asking what is Guid.MaxLength.


Solution

  • It depends on how you format the Guid:

    • Guid.NewGuid().ToString() = 36 characters (Hyphenated)
      outputs: 12345678-1234-1234-1234-123456789abc

    • Guid.NewGuid().ToString("D") = 36 characters (Hyphenated, same as ToString())
      outputs: 12345678-1234-1234-1234-123456789abc

    • Guid.NewGuid().ToString("N") = 32 characters (Digits and Letters only, no braces nor hyphens)
      outputs: 12345678123412341234123456789abc

    • Guid.NewGuid().ToString("B") = 38 characters (Braces)
      outputs: {12345678-1234-1234-1234-123456789abc}

    • Guid.NewGuid().ToString("P") = 38 characters (Parentheses)
      outputs: (12345678-1234-1234-1234-123456789abc)

    • Guid.NewGuid().ToString("X") = 68 characters (Hexadecimal)
      outputs: {0x12345678,0x1234,0x1234,{0x12,0x34,0x12,0x34,0x56,0x78,0x9a,0xbc}}

    It is possible to represent a Guids 16 bytes as a shorter string than shown above, but to do this you'd need to use an alternative formatter to the built in ToString() function.