oracle UUID最大字符长度

kpbwa7wx  于 2023-08-04  发布在  Oracle
关注(0)|答案(4)|浏览(150)

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

cuxqih21

cuxqih211#

RFC4122的第3节提供了UUID字符串表示的正式定义。它是36个字符(32个十六进制数字+4个破折号)。
听起来你需要弄清楚无效的60个字符的ID来自哪里,并决定1)是否要接受它们,以及2)这些ID的最大长度可能是基于用于生成它们的任何API。

4xrmg8kj

4xrmg8kj2#

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

i2loujxw

i2loujxw3#

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

flvtvl50

flvtvl504#

我知道这个问题已经有很多年了,但是现在使用Oracle,他们确实有一个UUID数据类型可以使用。从他们的网站:
通用唯一标识符(UUID)是一个128位的数字,用于识别计算机系统中的信息。您可以创建一个UUID并使用它来唯一地标识某些内容。在其规范文本表示中,UUID的16个八位字节表示为32个十六进制(基数为16)数字,以8-4-4-4-12的形式显示在由连字符分隔的五组中,总共36个字符(32个十六进制字符和4个连字符)。例如,a81 bc 81 b-dead-4 e5 d-abff-90865 d1 e13 b1。
因此,如上所述,您可以使用UUID类型或使用长度为36的字符串。
有关Oracle中UUID数据类型的详细信息,请参阅:https://docs.oracle.com/en/database/other-databases/nosql-database/21.1/sqlreferencefornosql/using-uuid-data-type.html#GUID-D2BEE2A1-BF6D-4F4A-8EF4-059A6C8FBAA6
下面是支持UUID的其他数据库的列表。

MySQLhttps://blogs.oracle.com/mysql/post/mysql-uuidshttps://dev.mysql.com/blog-archive/storing-uuid-values-in-mysql-tables/
Microsoft SQLhttps://learn.microsoft.com/en-us/sql/t-sql/data-types/uniqueidentifier-transact-sql?view=sql-server-ver16
Postgreshttps://www.postgresql.org/docs/current/datatype-uuid.html
MongoDBhttps://www.mongodb.com/docs/manual/reference/method/UUID/

相关问题