【问题标题】:How to convert a String to a GUID如何将字符串转换为 GUID
【发布时间】:2020-03-23 14:40:32
【问题描述】:

我需要将字符串转换为 GUID,网上有很多关于将字符串转换为 UUID 而不是 GUID 的教程。我正在使用 Java。

当我使用 UUID 时,我收到以下错误:

ERROR: operator does not exist: character varying = uuid
Hint: No operator matches the given name and argument types. You might need to add explicit type casts.

我尝试使用以下问题的帮助,但 Guid 似乎不是 java 中的类型,并且 GUID 的构造函数不接受任何参数:

How to try convert a string to a Guid

【问题讨论】:

  • UUID 基本上是表示 GUID 的 Java 类型。你想做什么你不能用 UUID 做?
  • 我正在尝试在 postgres 数据库中查找 GUID 类型的值
  • @K.Smith 你是否使用任何库来使用GUID 类?不太清楚这里的要求到底是什么。同样,UUID 在使用 Java 时没有为您解决什么问题?
  • 我在使用 UUID 时遇到错误,我将编辑原始问题以显示这一点。很抱歉造成混乱!
  • 好吧,那么您的“UUID”列实际上不是uuid,而是varchar 列。如果一切都是字符串,则无需转换

标签: java string postgresql uuid guid


【解决方案1】:

假设您的列在 Postgres 中定义为 uuid,您可以为此使用 java.util.UUID

类似:

java.util.UUID id = UUID.fromString("...."); 
PreparedStatement pstmt = connection.prepareStatement("select * from some_table where id = ?");
pstmt.setObject(1, id);
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
  ... do something 
}

【讨论】:

  • 当我这样做时,我收到以下错误:错误:运算符不存在:字符变化 = uuid 提示:没有运算符与给定的名称和参数类型匹配。您可能需要添加显式类型转换。
  • @K.Smith:那么数据库中的“uuid”列并不是真正的uuid,而是(错误地)定义为varchar——这是个坏主意。如果确实如此,那么这个问题实际上与 UUID 无关,而只是关于传递字符串 - 这与例如将表的first_name 列与用户给定的值进行比较
  • 我的专栏绝对是uuid!
  • @K.Smith:如果您收到该错误,则不会。请edit您的问题并为相关声明添加完整的CREATE TABLE声明。
  • 我已经调查过了,你是对的!我正在使用生成 uuid 函数,但随后将其保存为 varchar。感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-14
  • 1970-01-01
  • 2010-09-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多