在Postgres和Java中将字符串转换为UUID

45

我需要将字符串(文本)转换为UUID(Postgres),并保持与字符串相同的排序。 是否可能? 我看到UUID基于时间,所以这可能不可能?

我需要将字符串(text)转换为UUID(Postgres),并且要保持与字符串相同的排序。这种转换是否可能呢?我看到UUID是基于时间生成的,因此可能无法保证排序一致。

4个回答

62

在PostgreSQL的SQL语法中,使用

concat(UUID,'')

返回文本结果。使用

uuid(text)

返回UUID结果。


5
concat(uuid1, s2) 可以正常工作,uuid(str) - 未知的数据库函数 'uuid'。 - Dmitry Kaltovich

18
在PostgreSQL中,除了使用uuid()外,也可以显式指定类型,例如::uuid:
with myconst (__ef_filter__id_0, __filter_workitemid_0, __filter_projectid_1, __id_2) as (
values ( 'fcb8284c-1bd4-4d50-b5df-09a091b01d8c'::uuid, '9e4b70a7-c222-47dd-87cb-fbbaaf396ccd'::uuid, uuid('2b10c0a5-e35d-425d-a71a-9e473924ac4c'), uuid('3fa85f64-5717-4562-b3fc-2c963f66afa6')) )
select ...

3

JDK 中有一个专门管理 UUID 的类,叫做 java.util.UUID。其中有一个静态方法 fromString,可以满足您的需求。据我所知,您可以在 JDBC 插入语句中使用 UUID 实例。


2
oVirt开源项目中,我们使用PostgreSQL uuid类型来存储我们的主键和外键。
我们构建了一个称为Guid的包装器,它使用java.util.UUID类来保存从数据库中读取的数据。
当检索ResultSet(我们使用spring-jdbc)时,我们使用getString方法来获取UUID值作为字符串,然后使用java.util.UUID的fromString方法。
您可以git clone我们的项目,并查看ovirt-engine/backend/manager/modules/dal(我们的数据访问层)项目以获取更多信息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接