数据库中的GUID类型

时间:2010-03-30 19:09:26

标签: database database-design

GUID不是数据库中的官方数据类型。在我们现有的SQL Server设计中,Uniqueidentifier类型用于GUID值。现在我们正在切换到Sybase数据库。我们应该使用varchar(36)替换Uniqueidentifier类型吗?

我仍然对GUID感到困惑。我被告知GUID长度为16个字节,但其字符串长度为36个字符。我一定错过了什么。

4 个答案:

答案 0 :(得分:6)

GUID实际上是一个整数类型 - 它是128位整数(16字节)。

它通常表示为36个字符的字符串 - 但实际值​​是128位整数值。

答案 1 :(得分:5)

它是36个字符的原因是Guid通常显示为:

########-####-####-####-############

# = 1 hex character (0-9, A-F)
32 hex chars and 4 hyphens

Google快速搜索发现此newid的Sybase网站可能对您有所帮助。

答案 2 :(得分:2)

类型uniqueidentifier varchar(36)在其他数据库中应该是等效的。

要将uniqueidentifier值转换为char数据类型:

DECLARE @myid uniqueidentifier
SET @myid = NEWID()
SELECT CONVERT(char(255), @myid) AS 'char'
GO

uniqueidentifier (Transact-SQL)

答案 3 :(得分:2)

由于整数是32位且Guid是128位,因此您可以将Guid转换为4个32位整数(或两个64位整数)。见这里:Represent a Guid as a set of integers

但是,如果您没有本机Guid类型,将它作为字符串(或二进制文件)保存在数据库中可能会更容易。不幸的是,您将无法像在SQL Server中那样在数据库端生成它们,因此它作为主键的使用将受到限制。