繁体   English   中英

错误:PostgreSQL中不存在列

[英]Error: column does not exist in PostgreSQL

如果searchTerm存在于其中一列内的任何位置,则尝试创建一个将从表返回多行的函数。 (我是Postgres的新手。)

 CREATE OR REPLACE FUNCTION dts_getProjects(searchTerm TEXT) RETURNS SETOF project
 AS $$
 SELECT credit_br AS Branch, status FROM job_project
 WHERE credit_br LIKE '%'||searchTerm||'%'
 $$
 language 'sql';

我收到此错误:

  ERROR: column "searchTerm" does not exist LINE 3: ...status FROM job_project WHERE credit_br LIKE '%'||searchTerm||'... 

它应该像这样工作:

CREATE OR REPLACE FUNCTION dts_get_projects(_search_term text)
  RETURNS SETOF job_project AS
$func$
SELECT j.*
FROM   job_project j
WHERE  j.credit_br ILIKE '%' || _search_term || '%'
$func$  LANGUAGE sql;

我使用表类型返回整行。 这是安全的后备,因为您没有透露任何数据类型或表定义。

我也使用ILIKE使搜索不区分大小写(只是一个猜测,你决定)。

这只搜索credit_br 您的描述听起来像是要搜索所有列( anywhere inside one of the columns )。 同样,大多数基本信息都缺失了。 一种非常快速且稍微脏的方法是搜索转换为text的整个行表达式:

...
WHERE  j::text ILIKE '%' || _search_term || '%';
...

有关:

旁白:
如果可以避免,请不要在Postgres中使用混合大小写标识符。

不要引用函数的语言名称。 这是一个标识符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM