139

我们使用 UUID 作为 out oracle DB 的主键,并尝试为 VARCHAR 确定合适的最大字符长度。显然这是 36 个字符,但我们注意到生成的 UUID 比这更长 - 最多 60 个字符。有谁知道适合 UUID 的最大字符长度?

4

3 回答 3

200

RFC4122 的第 3 节提供了 UUID 字符串表示的正式定义。它是 36 个字符(32 个十六进制数字 + 4 个破折号)。

听起来您需要弄清楚无效的 60 字符 ID 的来源并决定 1)是否要接受它们,以及 2)这些 ID 的最大长度可能基于用于生成它们的任何 API。

于 2012-11-15T20:07:02.320 回答
72

顺便说一下,这是定义为 CHAR 36 的完美字段,而不是 VARCHAR 36,因为每个值都具有完全相同的长度。而且您将使用更少的存储空间,因为您不需要存储每个值的数据长度,只需存储值。

于 2013-09-24T18:13:43.907 回答
13

如今,大多数数据库都具有本机 UUID 类型,以便更轻松地使用它们。如果您没有,它们只是 128 位数字,因此您可以使用 BINARY(16),如果您经常需要文本格式,例如用于故障排除,则添加一个计算列以从二进制列自动生成它. 没有充分的理由存储(大得多的)文本表单。

于 2018-07-31T20:43:58.903 回答