簡體   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