ERROR: syntax error at or near "text" Position: 314

ERROR: syntax error at or near "text" Position: 314

我写了一个查询,它应该对数组中的每个值执行检查,如果它存在于任何 table 中,但我得到

ERROR: syntax error at or near "text"

你能告诉我我做错了什么吗?

我的查询:

DECLARE
  words text[];
  w text;
BEGIN
  words := string_to_array('a b c', ' ');
    FOR EACH w IN array(words) LOOP
      EXECUTE 'SELECT * FROM users WHERE w IN (last_name, first_name, middle_name)';
    END LOOP;
  END;

UPD

忘记指出了,应该可以在words变量中放入任何字符串。查询应该适用于像 'a b c''a''bc a d' 这样的字符串。 对不起。

我不明白过程和循环的意义所在。据我了解您的问题,您可以通过直接查询获得所需的结果,如下所示:

select u.*
from users u
where exists (
    select 1
    from unnest(string_to_array('a b c', ' ')) x(val)
    where x.val in (u.last_name, u.first_name, u.middle_name)
)