如何查询postgres的UUID

时间:2015-11-05 16:24:10

标签: ruby-on-rails postgresql activerecord

我想使用UUID作为标识符,提供前8位数字以确定它是否存在于数据库中。

通常我可以毫无问题地做到这一点:

select * from TABLE where id = 'e99aec55-9e32-4c84-aed2-4a0251584941'::uuid

但是这给了我错误:

select * from TABLE where id LIKE 'e99aec55%@'::uuid

错误:

ERROR:  invalid input syntax for uuid: "e99aec55%@"
LINE 1: select * from TABLE where id LIKE 'e99aec55...
                                              ^
Query failed
PostgreSQL said: invalid input syntax for uuid: "e99aec55%@"

有没有办法在postgresql中查询UUID类型的前n位数字?

2 个答案:

答案 0 :(得分:10)

由于您正在搜索x(t)的最高位,您实际上可以使用k/T0 Hz(因为uuid比较在PostgreSQL中定义良好):

between

答案 1 :(得分:4)

UUID不作为字符串存储在Postrges中,它们存储为16字节长的二进制值。因此,以您想要的方式查询它的唯一方法是首先将其转换为字符串,但这种转换的性能将比仅执行相等比较更糟糕。

此外,您需要维护UUID的字符串表示形式的索引,因此它没有意义。