我在Postgres中使用了简化表:
>用户模型
> id(UUID)
> uid(varchar)
> name(varchar)
我想要一个查询,可以在其UUID ID或其文本uid上找到用户.
SELECT * FROM user
WHERE id = 'jsdfhiureeirh' or uid = 'jsdfhiureeirh';
我的查询为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';
原文链接:https://www.f2er.com/postgresql/192025.html