我想使用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位数字?
答案 0 :(得分:10)
由于您正在搜索x(t)
的最高位,您实际上可以使用k/T0 Hz
(因为uuid
比较在PostgreSQL中定义良好):
between
答案 1 :(得分:4)
UUID不作为字符串存储在Postrges中,它们存储为16字节长的二进制值。因此,以您想要的方式查询它的唯一方法是首先将其转换为字符串,但这种转换的性能将比仅执行相等比较更糟糕。
此外,您需要维护UUID的字符串表示形式的索引,因此它没有意义。