Flutter集成Supabase时使用OR过滤器出现PGRST100解析错误
解决Supabase查询逻辑树解析错误(PGRST100)的方案
你的SQL逻辑是goalType = 'steppingStone' OR (goalOpen = true AND goalType != 'steppingStone'),错误根源是误用了all()函数——Supabase的all()是用于匹配数组包含所有指定元素的操作符,并非用来组合逻辑与的工具。
正确的REST查询语法需要用or()包裹两个条件分支,第二个分支内用and()组合两个子条件,在Flutter的Supabase客户端中代码示例如下:
final response = await supabase .from('your_table_name') // 替换为你的表名 .select() .or('goalType.eq.steppingStone,and(goalOpen.eq.true,goalType.neq.steppingStone)');
核心语法规则说明:
or(A,B):对应SQL中的A OR B逻辑and(X,Y):对应SQL中的X AND Y逻辑- 整体结构完美匹配你需要的
A OR (X AND Y)逻辑
另外注意goalType != steppingStone中的字符串引号,REST语法中虽可省略,但建议保持与前一个条件一致的写法,避免潜在的解析异常。
内容的提问来源于stack exchange,提问作者Davout
相关产品推荐
相关产品推荐

