如何在Supabase的IN运算符内嵌套LIKE运算符结合Dart变量完成查询
Supabase Dart 客户端的 in 方法不支持直接嵌套 LIKE ANY 语法,你可以直接使用 filter 方法传入自定义 PostgreSQL 运算符实现需求,具体实现如下:
步骤1:整理变量格式
不要将匹配规则拼接为逗号分隔的字符串,直接声明为 Dart 的 List<String> 类型即可:
// 每个元素为对应的模糊匹配规则 List<String> contacts = ['%91960000000', '%7780000000', '%6720000000', '%4160000000', '%7780000000'];
步骤2:编写查询语句
直接调用 filter 方法传入 LIKE ANY 运算符:
final { data, error } = await supabase .from('users') .select('phone_number') .filter('phone_number', 'LIKE ANY', contacts);
补充说明
- 如果需要大小写不敏感的模糊匹配,将运算符替换为
ILIKE ANY即可 - 该写法和你预期的
LIKE ANY(ARRAY[...])原生SQL逻辑完全一致,Supabase 客户端会自动将 Dart 列表转换为 PostgreSQL 数组格式 - 可以正常和其他查询条件链式组合,不会产生语法冲突
内容的提问来源于stack exchange,提问作者Sumchans
相关产品推荐
相关产品推荐

