如何在pgAdmin的PostgreSQL函数中正确使用LIKE操作符
问题解决方法
1. 先修复现有代码的语法错误
你提供的代码存在多处多余的冗余尾逗号,会导致函数运行异常:
- 函数参数定义末尾、返回表结构定义末尾、SELECT查询字段列表末尾都存在多余的逗号,需要删除。
2. 修正LIKE操作符的使用逻辑
你当前的写法"ProfessorName" LIKE ($2) 要求传入的参数自带通配符才会生效,对接搜索栏的场景下,用户输入的关键词通常需要手动拼接通配符才能实现模糊匹配效果,%是LIKE语法中用于匹配任意长度任意字符的通配符。
3. 修正后的完整函数代码
CREATE OR REPLACE FUNCTION public.school_function( student text DEFAULT NULL, professor text DEFAULT NULL ) RETURNS TABLE( "StudentName" text, "StudentID" bigint, "ProfessorName" text, "Subject" text, "Course" text ) LANGUAGE 'sql' AS $BODY$ SELECT "StudentName", "StudentID", "ProfessorName", "Subject", "Course" FROM seniorHighTable WHERE ("StudentName" = $1 OR $1 IS NULL) AND ("ProfessorName" LIKE CONCAT('%', $2, '%') OR $2 IS NULL) $BODY$;
补充适配不同搜索需求的调整说明
- 若需要前缀匹配(搜索内容以关键词开头),将通配符拼接改为
CONCAT($2, '%') - 若需要后缀匹配(搜索内容以关键词结尾),将通配符拼接改为
CONCAT('%', $2) - 若需要不区分大小写的模糊匹配,将
LIKE替换为ILIKE即可 - 若搜索栏为空时传入的是空字符串而非NULL,可将
$2 IS NULL修改为$2 IS NULL OR $2 = '',适配空输入返回全部数据的需求
内容的提问来源于stack exchange,提问作者driedbananas
相关产品推荐
相关产品推荐

