【问题标题】:Select rows using part of UUID4使用 UUID4 的一部分选择行
【发布时间】:2018-03-27 23:52:35
【问题描述】:

我有以 UUIDv4 作为主键的用户表。 如何选择 id 以“e2eb5”开头的所有行?

我尝试了以下选择:

SELECT * FROM "user" WHERE "id" LIKE 'e2eb5%';

在我的应用程序中,用户不到一千,UUID 的第一部分应该只是您识别他们所需的所有信息。

因此,我希望用户详细信息显示在这样的 url 上:

/users/e2eb5

代替:

/users/3b0fbfd6-0661-4880-b5c5-4659ed85fa96

编辑:

按照此处的建议进行查询:How to query UUID for postgres

where some_uuid between 'e99aec55-0000-0000-0000-000000000000'
                and 'e99aec55-ffff-ffff-ffff-ffffffffffff'

不是可行的解决方案,因为它需要固定长度的 uuid 前缀或编写更复杂的查询。

【问题讨论】:

  • 您可以尝试将id 转换为文本并以这种方式进行比较。 ... WHERE "id"::text LIKE 'e2eb5%';。大量行可能会失去性能,但我认为少于 1,000 行应该没问题。
  • @trs 效果很好!请发布它作为您的答案。

标签: postgresql


【解决方案1】:

您可以将id 转换为text 并比较您的问题。

SELECT *
FROM "user"
WHERE "id"::text LIKE 'e2eb5%';

这需要将每一行的id 转换为文本,因此对于吨或行来说可能会很慢。但是使用少于 1,000 个应该没问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-26
    • 2016-04-20
    • 1970-01-01
    • 2010-11-18
    • 2013-07-16
    • 1970-01-01
    • 1970-01-01
    • 2015-12-14
    相关资源
    最近更新 更多