Error: column does not exist in PostgreSQL
Error: column does not exist in PostgreSQL
尝试创建一个函数,如果 searchTerm
存在于其中一列中的任何位置,该函数将 return 来自 table 的多行。 (我是 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;
我将 table 类型用于 return 整行。这是安全的后备方案,因为您没有透露任何数据类型或 table 定义。
我还使用 ILIKE
使搜索不区分大小写(只是猜测,由您决定)。
这只搜索 一个 列 credit_br
。您的描述听起来您想要搜索所有列 (anywhere inside one of the columns
)。同样,大部分基本信息都丢失了。一种非常快速且有点脏的方法是搜索转换为 text
:
的整行表达式
...
WHERE j::text ILIKE '%' || _search_term || '%';
...
相关:
- Check a whole table for a single value
旁白:
如果可以避免,请不要在 Postgres 中使用大小写混合的标识符。
- Are PostgreSQL column names case-sensitive?
不要引用函数的语言名称。这是一个标识符。
尝试创建一个函数,如果 searchTerm
存在于其中一列中的任何位置,该函数将 return 来自 table 的多行。 (我是 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;
我将 table 类型用于 return 整行。这是安全的后备方案,因为您没有透露任何数据类型或 table 定义。
我还使用 ILIKE
使搜索不区分大小写(只是猜测,由您决定)。
这只搜索 一个 列 credit_br
。您的描述听起来您想要搜索所有列 (anywhere inside one of the columns
)。同样,大部分基本信息都丢失了。一种非常快速且有点脏的方法是搜索转换为 text
:
...
WHERE j::text ILIKE '%' || _search_term || '%';
...
相关:
- Check a whole table for a single value
旁白:
如果可以避免,请不要在 Postgres 中使用大小写混合的标识符。
- Are PostgreSQL column names case-sensitive?
不要引用函数的语言名称。这是一个标识符。