我在Postgres中有以下简化表格:

  • User Model

我想要一个可以在UUID id或文本uid上找到用户的查询.

SELECT * FROM user
WHERE id = 'jsdfhiureeirh' or uid = 'jsdfhiureeirh';

我的查询生成了一个invalid input syntax for uuid,因为在这个实例中我显然没有使用UUID.

如何完善该查询或判断该值是否为有效的UUID?

推荐答案

找到了!将UUID列强制转换为::text将停止错误.不确定性能是否会受到影响,但在大约5000行上,我获得了足够的性能.

SELECT * FROM user
WHERE id::text = 'jsdfhiureeirh' OR uid = 'jsdfhiureeirh';

SELECT * FROM user
WHERE id::text = '33bb9554-c616-42e6-a9c6-88d3bba4221c' 
  OR uid = '33bb9554-c616-42e6-a9c6-88d3bba4221c';

Postgresql相关问答推荐

处理Ruust-DIESEL中的Jsonb PostgreSQL列

Postgres 函数 now() 返回不正确的时区偏移量

PostgreSQL:如何避免被零除?

使用间隔参数的 go postgres 准备好的语句不起作用

从具有加权行概率的 PostgreSQL 表中 Select 随机行

PostgreSQL unnest 与空数组

heroku、postgreSQL、django、comments、tastepie:没有运算符匹配给定的名称和参数类型

Heroku Rails 4 无法连接到服务器:connection refused

PG::TRDeadlockDetected:ERROR: deadlock detected

knex: Select 特定日期范围内的行

带有双引号的 postgresql COPY 和 CSV 数据

无法登录 PostgreSQL 数据库

如何防止用户看到其他数据库和其他数据库中的表?

PostgreSQL:如何安装 plpythonu 扩展

postgresql:致命:password authentication failed for user "douglas"

Postgresql 中的 NOT EXISTS 子句

PG::ConnectionBad FATAL:role "Myname" does not exist

ruby on rails jsonb 列默认值

在布尔字段上添加索引

在 PostgreSQL 中使用 CASE 一次影响多个列