GUID
不是数据库中的官方数据类型。在我们现有的SQL Server设计中,Uniqueidentifier
类型用于GUID
值。现在我们正在切换到Sybase数据库。我们应该使用varchar(36)
替换Uniqueidentifier
类型吗?
我仍然对GUID
感到困惑。我被告知GUID
长度为16个字节,但其字符串长度为36个字符。我一定错过了什么。
答案 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
答案 3 :(得分:2)
由于整数是32位且Guid是128位,因此您可以将Guid转换为4个32位整数(或两个64位整数)。见这里:Represent a Guid as a set of integers
但是,如果您没有本机Guid类型,将它作为字符串(或二进制文件)保存在数据库中可能会更容易。不幸的是,您将无法像在SQL Server中那样在数据库端生成它们,因此它作为主键的使用将受到限制。