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_数组('....,'')