UUID 的顺序是如何定义的?

How is ordering defined for UUIDs?

我陷入了以下问题。我有两个 UUID

const boost::uuids::uuid first = Helper::String2UUID("43E3F007-3993-4587-801E-D24C012587E4"));
const boost::uuids::uuid second = Helper::String2UUID("652335C1-6479-4D6A-9599-25A671366E05"));

在 Boost 中,我认为这是真的。

BOOST_REQUIRE(first < second);

但是当我使用该 UUID 列的排序在 SQL 服务器上查询时,结果是

second < first

看起来 UUID 的排序因应用程序而异。这是否意味着没有订购 UUID 的一般规则,或者我做错了什么?

没有正式的 UUID 排序,因为它们只是 128 位的不透明字符串,没有内在含义。某些应用程序可能 "helpfully" 将它们定义为要排序的,但由于没有官方的排序可遵循,因此它们可能会就如何执行排序做出不同的决定。它甚至可能在同一应用程序的实例之间有所不同,例如由于机器的字节顺序,它们 运行 开启。