uniqueidentifier的长度有关问题
uniqueidentifier的长度问题?SQL codedeclare @temp varchar(36)set @tempnewid()select @temp --5233744
uniqueidentifier的长度问题?
SQL codedeclare @temp varchar(36)set @temp=newid()select @temp --52337445-56FD-456E-9AF4-F83CFC5C4016select len(@temp) --36select datalength(@temp) --36select len(newid()) --36select datalength(newid()) --16
《SQL Server 2005数据库开发实战》第51页定义如下:
Uniqueidentifier存储大小为16个字节
我的问题来了:
16个字节=32个字符
GUID: 52337445-56FD-456E-9AF4-F83CFC5C4016 的长度为36,它怎么存的下呢?
[解决办法]52337445-56FD-456E-9AF4-F83CFC5C4016中间含4个连接号"-"
所以,36-4=32, right?
[解决办法]GUID在存储的时候是不存储那四个连接号的,所以是36-4=32.而GUID的字符都是十六进制的,一个16进制用四位表示,一个字节8位,所以32 * 4 /8 =16字节,这是在数据存储层面的。
而查出来的GUID是根据数据加上连接符组成的特定“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”格式,所以字符数是36,这是表示层面的。