Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 错误:在“或”附近出现语法错误;“文本”;职位:314_Postgresql_Plpgsql_Dynamic Sql - Fatal编程技术网

Postgresql 错误:在“或”附近出现语法错误;“文本”;职位:314

Postgresql 错误:在“或”附近出现语法错误;“文本”;职位:314,postgresql,plpgsql,dynamic-sql,Postgresql,Plpgsql,Dynamic Sql,我编写了一个查询,该查询应该对数组中的每个值执行检查,如果它存在于任何表中,但我得到 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 'SELEC

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

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


忘了指出,应该可以在单词中插入任何sting变量。查询应该适用于字符串,如
'abc'
'a'
'bcaad'
对不起。

我看不出这个过程和循环有什么意义。我理解你的问题,你可以通过直接的查询得到你想要的结果,如下所示:

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)
)

我看不出这个过程和循环有什么意义。我理解你的问题,你可以通过直接的查询得到你想要的结果,如下所示:

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)
)

从错误中可以看出,
DECLARE
块中的一行,因为这是我看到的唯一出现的“text”,它周围有一个语法错误。我将验证您所拥有的语法是否有效。匿名PL/pgSQL块需要从错误中写入块中,
DECLARE
块中的一行,因为这是我看到的唯一出现的“text”,它周围有语法错误。我将验证您的语法是否有效。匿名PL/pgSQL块需要在块中编写我认为您甚至不需要最不必要的:
where数组[u.last\u name,u.first\u name,u.middle\u name]&&string\u to_数组('....,'')
我认为您甚至不需要最不必要的:
where数组[u.last_name、u.first_name、u.middle_name]&&string_to_数组('....,'')