首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

uniqueidentifier的长度有关问题

2012-07-20 
uniqueidentifier的长度问题?SQL codedeclare @temp varchar(36)set @tempnewid()select @temp --5233744

uniqueidentifier的长度问题?

SQL code
declare @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,这是表示层面的。

热点排行
Bad Request.