0

希望这是提出这个问题的正确标签。之前在几个论坛上发过,现在还没有答案。

以下是从 supbase 网站复制的查询。

const { data, error } = await supabase
  .from('users')
  .select('phone_number')
  .in('phone_number', LIKE(ARRAY[@contacts]))

我想达到同样的效果,但我需要在 IN 运算符中传递一个带有 Dart 变量的 LIKE 运算符。如下所示,这只是一个示例。

const { data, error } = await supabase
  .from('users')
  .select('phone_number')
  .in('phone_number', LIKE ANY(ARRAY[@contacts]))

dart 中的 contacts 变量是 String 类型的,它有这种格式

'%91960000000’,’%7780000000',’%6720000000',’%4160000000','%7780000000'
4

1 回答 1

1

在这种情况下,您将需要一个函数。

create or replace function get_users(contacts text[]) returns users as $$
  select * from users where phone_number like any(contacts);
$$ language sql;

然后您可以将其称为:

const { data, error } = await supabase
  .rpc('get_users', {contacts: ['%91960000000', '%6720000000']})
  .select('phone_number')
于 2021-08-25T02:29:04.277 回答